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

Python大体积xlsx文件快速转csv方案求助,现有方案效率过低

XLSX大文件高效转CSV优化方案

你当前使用的pandas+openpyxl、原生openpyxl默认配置慢的核心原因是两类实现都是纯Python开发,默认会把整个文件全量加载到内存解析单元格结构,大文件下内存和CPU开销极高。以下是可直接落地的提速方案:

  • 方案1:修改openpyxl为只读流式加载,无需更换依赖
    原有openpyxl使用默认加载模式,全量读取文件内容到内存,改为只读模式后流式逐行解析,内存占用降低90%以上,速度提升3-5倍,代码示例:
import openpyxl
import csv
import os

# read_only=True为核心优化参数
wb = openpyxl.load_workbook(file, read_only=True, data_only=True)
sh = wb.active
with open(os.path.join(path, filename), 'w', newline="", encoding='utf-8') as f:
    c = csv.writer(f)
    # values_only=True直接返回单元格值,省略单元格对象构造开销
    for r in sh.iter_rows(values_only=True):
        c.writerow(r)
wb.close()

该方案60M规格的常规xlsx文件转换时间可压缩到1分钟以内。

  • 方案2:使用Rust实现的calamine解析引擎,纯Python生态内性能最优
    calamine是Rust开发的高性能表格解析库,Python绑定版本可直接作为pandas的读取引擎使用,解析速度比openpyxl快5-10倍,首先安装依赖:
    pip install python-calamine
    转换代码示例:
import pandas as pd
import os

read_file = pd.read_excel(os.path.join(path, old_filename), engine="calamine")
read_file.to_csv(os.path.join(path, new_filename), index=None, header=True, encoding='utf-8')

该方案60M规格的常规xlsx文件转换时间普遍在10-30秒区间。

  • 方案3:调用LibreOffice命令行转换,性能接近原生工具极限
    如果运行环境允许安装LibreOffice,直接调用其静默命令行转换是成本最低、性能最高的方案,底层为C++实现的解析逻辑,无需维护转换代码,命令示例:
# Windows环境执行
"C:\Program Files\LibreOffice\program\soffice.exe" --headless --convert-to csv --outdir 输出目录路径 输入xlsx文件路径

# Linux/macOS环境执行
libreoffice --headless --convert-to csv --outdir 输出目录路径 输入xlsx文件路径

该方案60M规格的常规xlsx文件转换时间普遍在10秒以内,可通过额外参数指定转换的工作表、编码格式等配置。

如果仅需要转换xlsx内的指定工作表,可在上述所有方案中添加对应参数指定目标工作表,不需要解析全量工作表内容,可再获得10%-30%的速度提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:09:05