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

如何用Python将超1048576行的数据集导出到单个Excel多工作表?

解决Excel单工作表行数限制:将大数据集拆分到多工作表

问题重现

运行以下代码时出现行数超限错误:

import numpy as np
import pandas as pd

## 创建数组
data = np.arange(7152123)
print(data)

## 转换为DataFrame
df = pd.DataFrame(data)
print("\n df = \n", df)     

## 导出到Excel
df.to_excel('df.xlsx', index=False,header=False)

错误信息:

ValueError: This sheet is too large! Your sheet size is: 7152123, 1
Max sheet size is: 1048576, 16384

错误原因

标准.xlsx格式的Excel单工作表最多支持1048576行,而待导出的数据集包含7152123行,远超单表上限。

解决方案

使用pandas.ExcelWriter将大DataFrame拆分为多个子数据集,分别写入同一个Excel文件的不同工作表:

import numpy as np
import pandas as pd

# 创建数据集
data = np.arange(7152123)
df = pd.DataFrame(data)

# 定义Excel单工作表最大行数
MAX_ROWS = 1048576
# 计算需要拆分的工作表数量(向上取整,避免遗漏末尾数据)
num_sheets = (len(df) + MAX_ROWS - 1) // MAX_ROWS

# 写入多工作表
with pd.ExcelWriter('df_split.xlsx') as writer:
    for i in range(num_sheets):
        # 截取当前工作表对应的行数据
        start_idx = i * MAX_ROWS
        end_idx = min((i+1) * MAX_ROWS, len(df))
        df_subset = df.iloc[start_idx:end_idx]
        # 写入工作表,命名为Sheet_1、Sheet_2...
        df_subset.to_excel(writer, sheet_name=f'Sheet_{i+1}', index=False, header=False)

print("数据已成功拆分写入多工作表Excel文件")

关键说明

  • MAX_ROWS:固定为Excel单表最大行数1048576,确保每个工作表不触发超限错误
  • 工作表数量计算:通过(总长度 + 单表行数 - 1) // 单表行数实现向上取整,保证所有数据都能被分配到工作表中
  • ExcelWriter上下文管理器:自动处理文件的打开与关闭,避免资源泄漏
  • 工作表命名:按顺序命名为Sheet_1、Sheet_2,方便快速定位不同数据块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:31:13