xx10060 发表于 2023-7-27 09:31

EXCEL的xls和xlsx转换工具 已打包为EXE 提供源码

本帖最后由 xx10060 于 2023-8-18 11:47 编辑

由于工作需要,在论坛中找到excel的转换工具,原帖https://www.52pojie.cn/forum.php?mod=viewthread&tid=1686635&highlight=xlsx%2B%D7%AA%2Bxls
https://attach.52pojie.cn//forum/202307/27/093550ma6b6llhamjzwweb.gif?l
可能是因为时间比较久了,工具不好用,根据作者提供的代码改造了一下。
重新打包了EXE,下载地址:https://wwmc.lanzoub.com/iSyow13ldcbc
现在我也把代码分享给大家,感兴趣的小伙伴可以继续改造,打包源码

from datetime import datetime
import PySimpleGUI as sg
import win32com.client as win32
import os
import sys

excel = win32.gencache.EnsureDispatch('Excel.Application')

def convert_file(file_name, output_format):
    input_ext = os.path.splitext(file_name)[-1].lower()
    if input_ext not in ['.xlsx', '.xls']:
      return f'{file_name} 不支持的文件类型'
    elif input_ext == output_format:
      return f'{file_name} 当前文件类型无需转换'
    try:
      wb = excel.Workbooks.Open(file_name)

      # 保存转换后的文件
      new_file_name = os.path.splitext(file_name) + output_format
      # 替换文件路径中的斜杠
      new_file_name = new_file_name.replace("/", "\\")
      wb.SaveAs(new_file_name, FileFormat=get_format(output_format))
      wb.Close()

      return f'转换成功:{file_name} 转换为 {output_format}'
    except Exception as e:
      excel.Application.Quit()
      return f'【转换失败】:{file_name}'

def get_format(file_ext):
    if file_ext == '.xls':
      return 56
    elif file_ext == '.xlsx':
      return 51

def gui():
    sg.theme('DarkBlue')

    # 更换程序图标的文件路径
    icon_path = './icon1.ico'

    layout = [
      ,
      ,
      [sg.Input(key='文件路径', size=(40, 1), font=('黑体', 12)),
         sg.FilesBrowse('选择', file_types=(("Excel文件", "*.xlsx; *.xls"),), target='文件路径',
                        font=('黑体', 12), button_color=('white', '#00CED1'))],
      [sg.Radio('xlsx转xls', '选择转换格式', key='xlsx_to_xls', default=True, font=('黑体', 14), enable_events=True),
         sg.Radio('xls转xlsx', '选择转换格式', key='xls_to_xlsx', font=('黑体', 14), enable_events=True)],
      [sg.Button('转换', key='转换', button_color=('white', '#00CED1'), size=(10, 1), font=('黑体', 14)),
         sg.Button('清空', key='清空', size=(10, 1), font=('黑体', 14))],
      
    ]

    window = sg.Window('文件格式转换工具.By.Eric.', layout, element_justification='center', resizable=True,
                     finalize=True, icon=icon_path)

    while True:
      event, values = window.read()
      if event == sg.WIN_CLOSED:
            excel.Application.Quit()
            break
      if event == '转换':
            output_format = '.xls' if values['xlsx_to_xls'] else '.xlsx'
            for i in values['文件路径'].split(';'):
                print(convert_file(i, output_format))
                excel.Application.Quit()
            window['文件路径'].update('')
      elif event == '清空':
            window['文件路径'].update('')
            window.FindElement('sg_output').Update("")

    window.close()

if __name__ == '__main__':
    gui()

lea999 发表于 2024-1-5 17:44

D:\anaconda3\python.exe C:\Users\Administrator\Desktop\原创力文档下载工具\EXCEL\EXCEL.py
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\原创力文档下载工具\EXCEL\EXCEL.py", line 2, in <module>
    import PySimpleGUI as sg
ModuleNotFoundError: No module named 'PySimpleGUI'

进程已结束,退出代码1

xx10060 发表于 2023-7-29 14:00

wapjsx 发表于 2023-7-27 17:07
请问下大佬,为什么我不能直接运行python代码呢?

这部分代码是需要有依赖库的,估计你那些引用的依赖没有导致报错的,你可以用python的开发工具去运行这段代码,工具会帮你下载本地没有的依赖库

wapjsx 发表于 2023-7-27 17:07

请问下大佬,为什么我不能直接运行python代码呢?

Dark_Forest 发表于 2023-7-28 09:48

wapjsx 发表于 2023-7-27 17:07
请问下大佬,为什么我不能直接运行python代码呢?

报错信息发一下

ywd683 发表于 2023-7-31 06:31

谢谢大佬分享。

bin_chb 发表于 2023-8-3 13:07

wapjsx 发表于 2023-7-27 17:07
请问下大佬,为什么我不能直接运行python代码呢?

第一行datetime后边少了个回车

zjm2013 发表于 2023-8-3 19:23

研究一下,谢谢

xx10060 发表于 2023-8-18 11:48

bin_chb 发表于 2023-8-3 13:07
第一行datetime后边少了个回车

感谢指正,已修改

ethonjohn 发表于 2023-11-19 11:25

请问是不是只能在win10以上运行,我的系统是win7,提示找不到相应的模块

yp5768 发表于 2023-12-4 12:10


这个厉害了,谢谢楼主的分享
页: [1] 2 3
查看完整版本: EXCEL的xls和xlsx转换工具 已打包为EXE 提供源码