You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas read_excel读取Excel时工作表索引异常问题求助

LibreOffice保存Excel后Pandas读取工作表索引异常的原因

核心原因

旧版LibreOffice(v6.4.7.2)在将单工作表文件保存为Excel 2007-365格式时,存在格式兼容bug:会自动生成一个命名为1.1.1的隐藏空工作表,且该表在文件内部的存储顺序排在了用户创建的目标工作表之前。

Pandas的read_excel()函数读取xlsx文件时,严格按照文件内部存储的工作表顺序分配索引,并且会读取所有工作表(包括隐藏的),因此就出现了:

  • sheet_name=0对应那个隐藏的空DataFrame
  • 实际需要的目标工作表被分配到了sheet_name=1的位置

验证方式

执行以下代码可以查看文件中所有工作表的名称列表,确认是否存在额外的空表:

import pandas as pd
xls = pd.ExcelFile("你的文件路径.xlsx")
print(xls.sheet_names)

输出会显示类似['1.1.1', '你的目标工作表名']的结果,证明文件内确实包含两个工作表。

解决办法

  1. 升级LibreOffice:更新到v7.x及以上版本,新版修复了该xlsx格式兼容问题,保存单工作表时不会生成额外空表。
  2. 指定工作表名称读取:读取时直接用工作表名称而非索引,避免索引偏移问题,示例代码:
    df = pd.read_excel("你的文件路径.xlsx", sheet_name="你的目标工作表名")
    
  3. 手动清理空表:在LibreOffice中保存前,检查并删除所有隐藏的空工作表,再重新保存文件。

内容的提问来源于stack exchange,提问作者R-obert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:40:58