Python将xls文件转换为xlsx的4种实用方案
在Python中将老旧的.xls文件转换为现代的.xlsx格式是常见的数据处理需求。本文详细对比并演示pandas、win32com、xls2xlsx及pyexcel四个模块的实现方案。读者可根据是否需要保留单元格样式、是否运行于Windows环境以及是否支持跨平台,直接复制对应代码快速完成批量格式转换。
转换目标与前置条件
本流程旨在通过Python脚本将指定路径下的 .xls 工作簿转换为标准的 .xlsx XML 格式。所有方法均基于 Python 3.x 环境执行,请确保已配置好 pip 包管理器。在开始转换前,建议对原始 .xls 文件进行本地备份,避免新文件生成过程中因权限或中断导致源数据意外覆盖。

第1步:使用pandas进行基础内容转换
目的:快速获取表格数据并以纯文本形式输出为 xlsx,适合仅需提取数值且忽略原有排版样式的场景。
pip install pandas -i https://mirrors.aliyun.com/pypi/simple
import pandas as pd
filename = "test_Excel.xls"
outfile = "test_Excel-pandas.xlsx"
# 读取 xls 文件
data = pd.read_excel(filename)
# 写入 xlsx 文件并去除多余行索引
data.to_excel(outfile, index=False)
注意:该方法仅保留单元格内的文本与数值内容,原有的加粗、颜色、合并单元格等格式信息将不被保留。
第2步:利用win32com调用桌面级Excel引擎
目的:直接调用本机安装的 Office Excel 应用程序执行转换,完美还原原始排版。
python -m pip install pywin32 -i https://mirrors.aliyun.com/pypi/simple
import os
import win32com.client as win32
filename = "test_Excel.xls"
outfile = "test_Excel-win32.xlsx"
# 启动 Excel 应用程序实例
excel = win32.gencache.EnsureDispatch("Excel.Application")
# 打开目标 xls 文件(需使用绝对路径)
wb = excel.Workbooks.Open(os.path.abspath(filename))
# 另存为 xlsx 格式(FileFormat=51 代表 xlOpenXMLWorkbook)
wb.SaveAs(os.path.abspath(outfile), FileFormat=51)
wb.Close()
excel.Application.Quit()
注意:该模块强依赖 Windows 操作系统且必须在后台成功调起 Excel 程序。若未安装 Office 套件或历史进程残留会导致报错,不适合 Linux/macOS 服务器环境。
第3步:借助xls2xlsx实现跨平台保真转换
目的:在不安装 Office 软件的前提下,同时保留文本数据与单元格样式,适用于多系统混合部署。
pip install xlrd xls2xlsx -i https://mirrors.aliyun.com/pypi/simple
from xls2xlsx import XLS2XLSX
filename = "test_Excel.xls"
outfile = "test_Excel-x2x.xlsx"
# 初始化转换器并读取源文件
x2x = XLS2XLSX(filename)
# 执行写入输出至 xlsx
x2x.to_xlsx(outfile)
注意:该方案基于底层解析器处理,不依赖外部办公软件即可保留完整的格式信息,兼容 Windows、macOS 及各类 Linux 发行版。
第4步:采用pyexcel执行直接覆盖输出
目的:通过统一接口无缝切换读写格式,代码最为精简,适合轻量级脚本集成。
pip install pyexcel -i https://mirrors.aliyun.com/pypi/simple
import pyexcel
filename = "test_Excel.xls"
outfile = "test_Excel-pyexcel.xlsx"
# 直接指定源路径与目标路径完成转换
pyexcel.save_book_as(file_name=filename, dest_file_name=outfile)
注意:与 pandas 类似,该工具默认仅迁移纯数据字段,不附带任何单元格样式或图表元素。
完成判断与常见问题排查
- 结果核对:转换成功后可在同级目录下找到生成的 .xlsx 文件。双击打开确认能正常载入且无乱码提示,表格行列结构与源文件一致。
- xlrd 版本冲突:若第3步抛出结构解析异常,通常因当前环境安装的 xlrd ≥ 2.0.0(已移除对旧二进制格式的支持)。请在终端执行
pip install "xlrd<2.0.0"降级后即可正常运行。 - 进程阻塞:使用 win32com 时若多次运行卡死,请检查任务管理器是否残留
EXCEL.EXE进程,必要时补充delattr(excel, 'Application')释放句柄。
简要总结
上述四种方案覆盖了从纯数据提取到全格式保留、从桌面客户端到云端服务器的多样化需求。实际生产中,若强调兼容性且无需样式,推荐 pandas 或 pyexcel;若必须严格复刻原表排版,则应在 Windows 端使用 win32com,或在跨平台服务器上部署 xls2xlsx。以上就是Python将xls文件转换为xlsx的4种实用方案的详细内容,更多关于Python数据格式转换与办公自动化的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









