Python用pandas打开xlsx报错Worksheet index 0 is invalid如何解决
问题原因
- 你使用的Excel文件存在不符合OpenXML规范的元数据,openpyxl(pandas读取xlsx格式默认调用的解析库)识别到工作表
20211103_logfile的配置无效,直接将其从可用工作表列表中移除,最终导致解析后没有可读取的工作表,触发报错。 - 小概率是文件导出不完整、存储过程中损坏,或者工作表被设置为特殊隐藏状态,无法被默认解析规则识别。
解决方案
按优先级依次尝试:
- 先手动打开该Excel文件,确认是否能正常访问工作表内容
- 如果手动打开报错/看不到任何工作表:说明文件本身损坏,找数据源重新导出/获取原始文件即可。
- 如果手动可以正常看到工作表:执行下一步。
- 重新另存文件修复元数据
用Excel打开文件后,直接选择「另存为」,格式选标准的.xlsx,保存为新文件后再用原代码读取,Excel会自动修正无效的配置项,90%以上的同类问题可以通过该方法解决。 - 更换兼容性更好的解析引擎
安装python-calamine库,该库对非标准工具生成的xlsx文件兼容性远高于openpyxl:
修改读取代码指定引擎:pip install python-calamine[full]import pandas as pd file = "C://Dev//20211103_logfile Box 2.8.xlsx" temp=pd.read_excel(file, engine='calamine') - 确认可用工作表列表
如果以上方案都不行,可以先运行以下代码,查看解析库能识别到的所有工作表名称,再手动指定工作表读取:import pandas as pd file = "C://Dev//20211103_logfile Box 2.8.xlsx" # 分别尝试不同引擎打印工作表列表 xls1 = pd.ExcelFile(file, engine='openpyxl') print("openpyxl识别到的工作表:", xls1.sheet_names) xls2 = pd.ExcelFile(file, engine='calamine') print("calamine识别到的工作表:", xls2.sheet_names)
内容的提问来源于stack exchange,提问作者Keyur Paraskar
相关产品推荐
相关产品推荐

