wkdxz 发表于 2022-9-11 11:48

xls和xlsx互相转换工具 已打包为EXE 提供源码下载

本帖最后由 wkdxz 于 2022-9-11 12:26 编辑

把之前的代码转为Gui,一个新的练手作,灵感来自:https://www.52pojie.cn/thread-1686588-1-1.html

成品链接:
xls批量转换为xlsx.exehttps://www.aliyundrive.com/s/wmAxnU15qdb 提取码: 5gh5
低版本转高版本源码【低转高源码.py】


顺带做了个 XLSX转XLS工具,反向转,送给需要的兄弟【高转低源码.py】
EXE成品: xlsx2xls【高版本转低版本】.exehttps://www.aliyundrive.com/s/Mjno4rr535F 提取码: fa63


操作演示:



假装解释一下源码:

导入库:
import win32com.client as win32
import os
import PySimpleGUI as sg

转换:
def to_xlsx(file_name):
    houzhui = '.xls'
    if os.path.splitext(file_name)[-1].lower() != houzhui:
      print(f'{file_name} 后缀不是 {houzhui}')
      return
    try:
      wb = excel.Workbooks.Open(file_name)
      wb.SaveAs(f"{file_name}x", FileFormat=51)#xls format:56
      wb.Close()
      return f'转换成功:{file_name}'
    except Exception as e:
      return f'【转换失败】:{file_name}'

GUI:
def gui():
    layout = [[
      sg.Input(key='文件路径'),
      sg.FilesBrowse('选择xls文件',
                     file_types=(("xls文件", "*.xls"), ),
                     target='文件路径',
                     key='选择')
    ],
            [
                  sg.Button('转换',
                            key='转换',
                            button_color='red',
                            enable_events=True),
                  sg.Button('清空', key='清空', enable_events=True),
                  sg.Text('', key='提示', text_color='yellow')
            ]]
    window = sg.Window('xls转xlsx工具-by wkdxz@52pojie.cn',
                     layout,
                     font=('微软雅黑', 12))
    while True:
      event, values = window.read()
      if not event:
            break
      if event == '转换':
            tip = ['【操作完成,转换成功的xlsx文件保存在原目录下】\n']
            for i in values['文件路径'].split(';'):
                tip.append(to_xlsx(i))
                excel.Application.Quit()
            window['文件路径'].update('')
            sg.popup('\n'.join(tip), font=('微软雅黑', 10))
      elif event == '清空':
            window['文件路径'].update('')

    window.close()





simonkey8 发表于 2024-5-17 16:13

请教一下,这个是什么原因?

raceback (most recent call last):
File "xls2xlsx.py", line 65, in <module>
File "xls2xlsx.py", line 55, in gui
File "win32com\client\__init__.py", line 474, in __getattr__
File "win32com\client\__init__.py", line 467, in _ApplyTypes_
pywintypes.com_error: (-2147418111, '被呼叫方拒绝接收呼叫。', None, None)

谢谢!

simonkey8 发表于 2024-5-17 16:12

raceback (most recent call last):
File "xls2xlsx.py", line 65, in <module>
File "xls2xlsx.py", line 55, in gui
File "win32com\client\__init__.py", line 474, in __getattr__
File "win32com\client\__init__.py", line 467, in _ApplyTypes_
pywintypes.com_error: (-2147418111, '被呼叫方拒绝接收呼叫。', None, None)

losingstars 发表于 2022-9-11 11:54

谢谢分享。

andyle 发表于 2022-9-11 13:11

感谢分享吧,早个几年还能有用,现在完全没有必要了

LuckyClover 发表于 2022-9-11 13:15

感谢大佬分享

hzyhzjjzh 发表于 2022-9-11 13:24

谢谢分享。{:1_937:}

zuoanmu 发表于 2022-9-11 14:15

这是干嘛用的~

wkdxz 发表于 2022-9-11 14:37

zuoanmu 发表于 2022-9-11 14:15
这是干嘛用的~

excel批量文件转换工具

ycyanwen 发表于 2022-9-11 15:31

这款工具很实用。谢谢楼主分享。。。

放羊的狼 发表于 2022-9-11 16:02

看到标题后就猜到是saveas,有遇到过另存后文件损毁的情况,改回原后缀就行。还有另一个问题,xls转xlsx无所谓,xlsx如果超出65536行或者256列呢?

lazhou 发表于 2022-9-11 16:08

谢谢分享!
页: [1] 2 3 4
查看完整版本: xls和xlsx互相转换工具 已打包为EXE 提供源码下载