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

Pandas的read_excel/to_csv是否存在Excel导入行数限制?

问题结论

pandas.read_excel()与pandas.to_csv()不存在内置的行数上限限制,你遇到的行缺失问题,和这两个方法的行数限制无关,基本是代码写法缺陷、读取引擎bug或者源文件格式异常导致的。

你当前代码的核心问题
  • 循环中使用DataFrame.append()做拼接是主要风险点:该方法从pandas 1.4.0版本开始已被正式废弃,在处理多表、大数据量拼接时,若不同工作表的列类型、列顺序不完全匹配,很容易出现静默的数据截断、丢行问题,且不会抛出任何报错。
  • 未显式指定读取参数时,默认Excel引擎会自动判定有效数据区域:针对.xlsx文件pandas默认调用openpyxl引擎,老版本openpyxl遇到工作表内的合并单元格、隐藏行、整行空值、异常格式单元格时,会错误判定数据边界,提前终止读取。
修正后的稳定实现代码
import pandas as pd

# 读取阶段显式指定引擎和参数,避免引擎自动判定数据边界导致的丢行
sheets_dict = pd.read_excel(
    io="C:/ExcelSheets.xlsx",
    sheet_name=None,
    engine="openpyxl",
    data_only=True,
    read_only=False
)

processed_sheets = []
for sheet_name, df in sheets_dict.items():
    # 跳过完全无数据的空工作表
    if df.empty:
        continue
    # 新增工作表名列,处理列名换行
    df["sheet"] = sheet_name
    df.columns = [str(col).split("\n")[-1] for col in df.columns]
    processed_sheets.append(df)

# 一次性拼接所有工作表,替代循环append
full_table = pd.concat(processed_sheets, ignore_index=True)

# 导出CSV时关闭索引写入,指定通用编码避免写入异常
full_table.to_csv(
    path_or_buf="TestReport.csv",
    index=False,
    encoding="utf-8-sig"
)
问题排查步骤
  • 第一步先定位丢行发生的阶段:读取完所有工作表后,直接循环打印每个表的行数for sheet_name, df in sheets_dict.items(): print(f"工作表{sheet_name}读取行数:{len(df)}"),和源Excel的实际行数对比,确认是读取阶段丢行,还是拼接、导出阶段丢行。
  • 如果是读取阶段就出现行数缺失,先把openpyxl升级到最新版本:执行命令pip install --upgrade openpyxl,绝大多数读取截断问题都是老版本引擎的边界判定bug导致的。
  • 如果源文件存在被筛选隐藏的行、大量零散空单元格,读取时可以增加参数keep_default_na=False,减少空值判定异常带来的读取截断。

内容的提问来源于stack exchange,提问作者ManOAction

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:18:16