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()
请教一下,这个是什么原因?
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)
谢谢!
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)
谢谢分享。 感谢分享吧,早个几年还能有用,现在完全没有必要了 感谢大佬分享 谢谢分享。{:1_937:} 这是干嘛用的~ zuoanmu 发表于 2022-9-11 14:15
这是干嘛用的~
excel批量文件转换工具 这款工具很实用。谢谢楼主分享。。。 看到标题后就猜到是saveas,有遇到过另存后文件损毁的情况,改回原后缀就行。还有另一个问题,xls转xlsx无所谓,xlsx如果超出65536行或者256列呢? 谢谢分享!