吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4074|回复: 30
收起左侧

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

   关闭 [复制链接]
wkdxz 发表于 2022-9-11 11:48
本帖最后由 wkdxz 于 2022-9-11 12:26 编辑

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

成品链接:  
xls批量转换为xlsx.exe  https://www.aliyundrive.com/s/wmAxnU15qdb 提取码: 5gh5

低版本转高版本源码【低转高源码.py】 xls2xlsx 完整源码.7z (1.01 KB, 下载次数: 145)


顺带做了个 XLSX转XLS工具,反向转,送给需要的兄弟【高转低源码.py】   【反向转】xlsx2xls.7z (1017 Bytes, 下载次数: 125)
EXE成品: xlsx2xls【高版本转低版本】.exe  https://www.aliyundrive.com/s/Mjno4rr535F 提取码: fa63



操作演示:
screenshots.gif


假装解释一下源码:

导入库:
[Python] 纯文本查看 复制代码
import win32com.client as win32
import os
import PySimpleGUI as sg


转换:
[Python] 纯文本查看 复制代码
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:
[Python] 纯文本查看 复制代码
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 [url=mailto:wkdxz@52pojie.cn]wkdxz@52pojie.cn[/url]',
                       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()






免费评分

参与人数 6吾爱币 +14 热心值 +5 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
S.K + 1 + 1 谢谢@Thanks!
yanglinman + 1 谢谢@Thanks!
冬天冷了多穿点 + 1 + 1 我很赞同!
pwp + 3 + 1 这种舍得发源码的贴子必须加鸡蛋
zhanglei1371 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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
谢谢分享。
zuoanmu 发表于 2022-9-11 14:15
这是干嘛用的~
 楼主| wkdxz 发表于 2022-9-11 14:37

excel批量文件转换工具
ycyanwen 发表于 2022-9-11 15:31
这款工具很实用。谢谢楼主分享。。。
放羊的狼 发表于 2022-9-11 16:02
看到标题后就猜到是saveas,有遇到过另存后文件损毁的情况,改回原后缀就行。还有另一个问题,xls转xlsx无所谓,xlsx如果超出65536行或者256列呢?
lazhou 发表于 2022-9-11 16:08
谢谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 08:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表