Python 批量将.xlsx文件转为.xls文件

工作需要,需要向xls文件里写入数据。由于xlrd\xlwt写入的数据不带格式,只好把xls模板先转为xlsx格式,用openpyxl批量写入完后再批量转为xls。

百度找的转换实例,实际应用时生成的xls文件打开总提示格式不一致或者干脆程序卡死。

 

为了解决这个问题,翻了半天资料。最终解决了,特此记录一下。

 

首先,我先把python升级到64位最新版,然后下载了win32的64位最新版。

其次,把office也换成了64位。

最后,在代码中加入了

xlApp.Visible = False
xlApp.DisplayAlerts = False

至此,在转换xls文件时,终于不会卡死,可以成功转换了。
 

以下是代码

.xlsx文件转为.xls文件:

 

import win32com.client as win32


def transform_xls(_input_path, _output_path):

    # 需要转换的文件路径
    input_path = _input_path

    # 转换完后输出的路径
    output_path = _output_path
    
    # 遍历需要转换的文件夹下面所有的文件
    file_list = os.listdir(input_path)

    # 获取遍历完的文件数量
    num = len(file_list)

    # 打印文件数量
    print(num)
    
    # 遍历文件
    for i in range(num):

        # 将文件和格式分开
        file_name = os.path.splitext(file_list[i])

        # 打印分开后的列表
        print(file_name)
        
        # 当遍历到的文件格式为'.xlsx'时
        if file_name[1] == '.xlsx':

            # 得到要转换的文件
            transfile1 = input_path + file_list[i]

            # 转换完需要输出的文件
            transfile2 = output_path + file_name[0]
            
            # 打印要转换的文件
            print('transfile1:'+ str(transfile1))
            
            # 使用win32操作excel
            xlApp = win32.gencache.EnsureDispatch('Excel.Application')
            
            # 后台运行, 不显示,不警告
            # 不写这个会卡死……注意Python、win32需要保持一致。比如我的都是64位的
            xlApp.Visible = False
            xlApp.DisplayAlerts = False
            
            # 打开要转换的excel
            xls = xlApp.Workbooks.Open(transfile1)
            
            # 将需要转换的excel另存为xls格式。 56为xls
            xls.SaveAs(transfile2 + '.xls', FileFormat=56)
            
            # 关闭excel文件
            xls.Close()

            # 退出进程
            xlApp.Application.Quit()


if __name__=='__main__':

    #待转换文件所在目录
    input_path = "E:\\Program Files\\桌面\\intput\\"
    
    #转换文件存放目录
    output_path = "E:\\Program Files\\桌面\\intput\\output\\"

    transform_xls(input_path , output_path)

 

 

参考资料:

Python-批处理.xlsx文件与.xls文件相互转换
https://blog.csdn.net/zkw_1998/article/details/103972386

XlFileFormat 枚举 (Excel) | Microsoft Docs
https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlfileformat

python转xlsx为xls 或重新保存xls
https://blog.csdn.net/nongcunqq/article/details/113369533

python-win32操作excel的一些特殊功能 - Maple_feng - 博客园 https://www.cnblogs.com/angelyan/p/13094204.html

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值