python excel 07版本转换为03版本

需要安装pywin32模块

pip install pywin32

主程序:

复制代码
import win32com.client as win32
import os.path
import glob

class Format():
    """用于文件转换的类"""
    def __init__(self):
        self.excel = win32.gencache.EnsureDispatch('Excel.Application')
    def xlsx2xls(self, xlsx_path, xls_path):
        """
        07版本excel转成03版本,多文件转换
        :param xlsx_path: 07路径
        :param xls_path: 03路径
        :return:
        """
        path_list = glob.glob(xlsx_path + '\\*.xlsx')  # 获取文件夹下所有xlsx

        for file in path_list:
            filename = os.path.basename(file).replace('.xlsx', '.xls')  # 获取文件名
            wb = self.excel.Workbooks.Open(file)
            wb.SaveAs(xls_path + '\\' + filename, FileFormat=56)  # xls为56
            wb.Close()

        self.excel.Application.Quit()
        print('xlsx2xls转换完成')

    def xlsx2xls_single(self, xlsx_path, xls_path):
        """
        excel  单个文件转换
        :param xlsx_path: 07版本
        :param xls_path: 03版本
        :return:03版本文件路径
        """
        try:
            filename = os.path.basename(xlsx_path).replace('.xlsx', '.xls')  # 获取文件名
            wb = self.excel.Workbooks.Open(xlsx_path)
            xls_path = os.path.dirname(xlsx_path)
            xls_path = xls_path.replace('/', '\\')
            save_path = xls_path+'\\'+filename
            wb.SaveAs(save_path, FileFormat=56)  # xls为56
            wb.Close()
            self.excel.Application.Quit()
            print('xlsx2xls转换完成')
        except Exception as e:
            wb.Close()
            self.excel.Application.Quit()
            print(e)

        return save_path

if __name__ == '__main__':
    test = Format()
    test.xlsx2xls_single(xlsx_path=r'E:\TestFile\AutoReport_Test\CD\新生成的报告\2020-11-21\311671.xlsx', xls_path=r"E:\TestFile\AutoReport_Test\CD\新生成的报告\2020-11-21")
复制代码

ps: 该模块使用的路径格式分隔符为“\\”

posted @   胸怀丶若谷  阅读(965)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
历史上的今天:
2019-11-21 os模块常用操作
点击右上角即可分享
微信分享提示