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

写入大数据量DataFrame到Excel报use_zip64()不存在错误,如何解决?

问题根因

你的代码存在三个核心问题,直接导致写入报错、文件体积过大:

  • 引擎混用:外层pd.ExcelWriter指定了openpyxl引擎,内层df.to_excel又指定xlsxwriter引擎,两者调用逻辑不兼容,直接触发写入报错
  • 未开启大文件支持:超过2GB的Excel文件需要ZIP64扩展支持,你注释掉的use_zip64()方法未正确启用
  • 未开启压缩配置:默认写入参数未启用最高等级压缩,生成的文件体积远超必要大小

修复代码

根据你的使用场景(追加工作表到已有Excel文件),调整后代码如下:

import openpyxl as pxl
import pandas as pd
import gc

def updated_files_with_new_work_sheet(file_name, sheetpxl_name, df, index_value=False):
    try:
        # 加载已有工作簿
        excel_book = pxl.load_workbook(file_name)
        # 统一使用openpyxl引擎,开启ZIP64支持和最高压缩等级
        with pd.ExcelWriter(
            file_name, 
            engine='openpyxl',
            engine_kwargs={
                'zip64': True,
                'compression': {'archive_name': 'xl/worksheets/{}.xml'.format(sheetpxl_name), 'compresslevel': 9}
            }
        ) as writer:
            writer.book = excel_book
            writer.sheets = {ws.title: ws for ws in excel_book.worksheets}
            # 移除多余的engine参数,统一用外层的openpyxl
            df.to_excel(writer, sheet_name=sheetpxl_name, index=index_value)
        gc.collect()
    except FileNotFoundError:
        # 新文件场景用xlsxwriter获得更好的压缩效果
        with pd.ExcelWriter(
            file_name,
            engine='xlsxwriter',
            engine_kwargs={
                'use_zip64': True,
                'options': {'compression_level': 9}
            }
        ) as writer:
            df.to_excel(writer, sheet_name=sheetpxl_name, index=index_value)

补充说明

  • 压缩等级设为9是ZIP格式的最高压缩比,可根据你的性能需求在1-9之间调整,数值越高压缩比越高、写入速度越慢
  • 若单工作表行数超过1048576、列数超过16384,超出Excel文件格式的上限,建议拆分多个工作表输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:36:04