Python拆分超大CSV转xlsx 解决单工作表行数超限问题
问题原因
xlsx格式单工作表最大支持1048576行、16384列,你当前待转换的CSV共2006894条数据行(不含表头),直接全量写入单个xlsx文件必然触发超限报错。
拆分实现代码
按照需求拆分:第一个文件保留原CSV表头+前1003447条数据,第二个文件保留原CSV表头+剩余1003447条数据。不需要一次性把整个446MB的CSV全加载到内存,按行偏移读取拆分即可,代码如下:
import pandas as pd # 配置路径和单文件最大数据行数 csv_file = r'D:\Назар\Бізнес\Реалізація\External_trade_data_01.2021-12.2021_UK.csv' split_row_count = 1003447 # 写入第一个文件:表头 + 前1003447条数据 df1 = pd.read_csv(csv_file, nrows=split_row_count) df1.to_excel(r'D:\Назар\Бізнес\Реалізація\test_part1.xlsx', index=False, header=True) # 写入第二个文件:保留表头,跳过已写入的前1003447条数据,读取剩余内容 # skiprows从索引1开始计数,避免跳过第0行的表头 df2 = pd.read_csv(csv_file, skiprows=range(1, split_row_count + 1)) df2.to_excel(r'D:\Назар\Бізнес\Реалізація\test_part2.xlsx', index=False, header=True)
注意事项
- 拆分后的两个文件单sheet数据量均为1003447条数据+1行表头,总计1003448行,远低于xlsx单sheet行数上限,不会再触发之前的超限报错
- 按行偏移读取的方式比全量读取整个CSV的内存占用低很多,适配446MB的大文件处理场景
- 如果后续CSV行数进一步增加,可以按照同样逻辑调整
split_row_count参数,拆分为更多xlsx文件即可
内容的提问来源于stack exchange,提问作者Nazarii
相关产品推荐
相关产品推荐

