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

如何将多个pandas DataFrame转xlsx后打包为单个zip压缩包

实现方案

你只需要把原来写入csv的逻辑替换为将DataFrame写入内存中的Excel二进制流,再将二进制流写入zip包即可,不需要生成本地临时Excel文件。

前置依赖

首先安装pandas写xlsx格式所需的依赖库:
pip install openpyxl

完整实现代码

import zipfile
import io
import pandas as pd

# 字典键调整为xlsx后缀
dfDict = {'df_1_name.xlsx': df1, 'df_2_name.xlsx': df2}

def makeZip(self, path, dfDict):
    fileNames = dfDict.keys()
    if len(fileNames) > 0:
        with zipfile.ZipFile(path, 'w') as xlsx_zip:
            for file in fileNames:
                # 创建内存缓冲区存储Excel二进制内容
                excel_buffer = io.BytesIO()
                # 将DataFrame写入内存缓冲区,指定xlsx格式引擎
                with pd.ExcelWriter(excel_buffer, engine='openpyxl') as writer:
                    dfDict[file].to_excel(writer, index=False, sheet_name='Sheet1')
                # 重置缓冲区指针到起始位置,读取完整内容写入zip
                excel_buffer.seek(0)
                xlsx_zip.writestr(file, excel_buffer.read(), zipfile.ZIP_DEFLATED)
    return

逻辑说明

  • 保持了原函数的入参结构,可直接替换原有csv打包逻辑使用
  • 用io.BytesIO做内存中转,不会生成临时本地Excel文件
  • 如果需要单个Excel文件内置多个工作表,只需调整ExcelWriter对应的写入逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:03