如何用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
相关产品推荐
相关产品推荐

