Python将xls文件转换为xlsx的4种实用方案

远山来客
远山来客
发布时间:2026-10-11 | 2人浏览过
原创

在Python中将老旧的.xls文件转换为现代的.xlsx格式是常见的数据处理需求。本文详细对比并演示pandas、win32com、xls2xlsx及pyexcel四个模块的实现方案。读者可根据是否需要保留单元格样式、是否运行于Windows环境以及是否支持跨平台,直接复制对应代码快速完成批量格式转换。

转换目标与前置条件

本流程旨在通过Python脚本将指定路径下的 .xls 工作簿转换为标准的 .xlsx XML 格式。所有方法均基于 Python 3.x 环境执行,请确保已配置好 pip 包管理器。在开始转换前,建议对原始 .xls 文件进行本地备份,避免新文件生成过程中因权限或中断导致源数据意外覆盖。

包含测试数据的Excel xls源文件示例
待转换的源文件 test_Excel.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数据格式转换与办公自动化的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表