如何用Python将.xlsx格式文件转换为.xls格式?
Python实现.xlsx到.xls的真实格式转换
直接修改扩展名或复制文件只会改变文件名,文件内部的二进制结构还是.xlsx格式,这就是Excel弹出格式不匹配警告的核心原因。下面是几种真正实现格式转换的可行方案:
方法一:使用pandas(适合纯数据类表格)
先安装所需依赖包:
pip install pandas xlwt openpyxl
示例代码:
import pandas as pd # 读取xlsx文件(依赖openpyxl引擎) df = pd.read_excel("input.xlsx", engine="openpyxl") # 保存为xls格式(依赖xlwt引擎) df.to_excel("output.xls", engine="xlwt", index=False)
注意:xlwt对单sheet的行数有限制(最多65536行),如果表格数据量超过这个阈值,建议选择其他方法。
方法二:使用openpyxl+xlwt(支持自定义单元格处理)
适合需要手动控制单元格内容、样式的场景:
from openpyxl import load_workbook import xlwt # 读取源xlsx文件 wb_xlsx = load_workbook("input.xlsx") ws_xlsx = wb_xlsx.active # 创建目标xls工作簿 wb_xls = xlwt.Workbook() ws_xls = wb_xls.add_sheet("Sheet1") # 逐行逐列复制数据 for row_idx, row in enumerate(ws_xlsx.iter_rows(values_only=True), start=0): for col_idx, value in enumerate(row, start=0): ws_xls.write(row_idx, col_idx, value) # 保存转换后的xls文件 wb_xls.save("output.xls")
这种方法可以扩展编写样式转换逻辑,但需要额外处理单元格格式的映射。
方法三:Windows环境下调用Excel COM对象(保留完整格式)
如果需要保留原文件的复杂格式(比如公式、图表、单元格样式),可以直接调用本地Excel程序完成转换:
import win32com.client as win32 import os excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False # 后台运行,不显示Excel窗口 try: # 打开xlsx源文件 wb = excel.Workbooks.Open(os.path.abspath("input.xlsx")) # 另存为xls格式(FileFormat=56对应标准xls格式) wb.SaveAs(os.path.abspath("output.xls"), FileFormat=56) wb.Close() finally: excel.Quit()
注意:此方法仅适用于Windows系统且需安装Excel软件,能完美保留原文件的所有格式和内容,但依赖外部软件环境。
内容的提问来源于stack exchange,提问作者BadgerTaco
相关产品推荐
相关产品推荐

