如何用Pandas打开并转换Windows 97-2003格式的XLS文件?
解决方案:将Windows 97-2003格式XLS转换为XLSX
核心问题排查与修复步骤
1. 路径转义错误
你的路径字符串中,Windows反斜杠\会被Python识别为转义字符(比如\v会解析为垂直制表符),导致路径无法正确识别。解决方式二选一:
- 使用原始字符串:在路径前加
r前缀 - 用双反斜杠
\\替代单反斜杠
示例:
path = r"G:\documents\vscode\company\test.XLS" # 或者 path = "G:\\documents\\vscode\\company\\test.XLS"
2. xlrd版本兼容性问题
xlrd 2.0及以上版本不再支持读取XLS格式文件(仅支持XLSX),如果你的xlrd版本是2.0+,会直接报错。解决方法:
pip install xlrd==1.2.0
3. 缺少保存为XLSX的关键步骤
你的代码仅完成了XLS文件的读取,没有执行转换保存操作。完整转换流程需要调用to_excel()方法:
完整可运行代码:
import pandas as pd # 修复后的路径 input_path = r"G:\documents\vscode\company\test.XLS" output_path = r"G:\documents\vscode\company\test_converted.xlsx" # 读取XLS文件(确保xlrd版本为1.2.0) df = pd.read_excel(input_path, engine='xlrd') # 保存为XLSX格式,index=False避免导出索引列 df.to_excel(output_path, index=False)
4. 复杂格式文件的备选方案
如果你的XLS文件包含宏、公式或复杂排版,Pandas可能会丢失格式,此时可以直接调用本地Excel软件进行转换(需安装Microsoft Excel):
import win32com.client as win32 excel = win32.gencache.EnsureDispatch('Excel.Application') # 打开原文件 wb = excel.Workbooks.Open(r"G:\documents\vscode\company\test.XLS") # 51对应XLSX格式编码 wb.SaveAs(r"G:\documents\vscode\company\test_converted.xlsx", FileFormat=51) wb.Close() excel.Quit()
内容的提问来源于stack exchange,提问作者Nicolas Rangel
相关产品推荐
相关产品推荐

