fastxlsx:性能暴增10倍的Python Excel写入神器

12333社保查询网www.sz12333.net.cn 2026-02-12来源:人力资源和社会保障局

  fastxlsx是基于Rust引擎的Python Excel读写库,专为极致性能而生。

  核心卖点:比openpyxl快5-10倍,比xlsxwriter快3-5倍。

性能分析:为什么fastxlsx这么快?

  openpyxl/xlsxwriter: 纯Python实现

  • 解释执行,速度慢
  • 受GIL限制,无法真并发

      fastxlsx: Rust引擎 + PyO3桥接

  • 编译型语言,接近C性能
  • 无GIL限制,支持真多线程
  • 零拷贝数据交换100万行X10列,效率对比

      import timeimport numpy as npfrom openpyxl import Workbook as OpenpyxlWorkbookimport xlsxwriterfrom fastxlsx import WriteOnlyWorkbook, DType# ============ 测试数据准备 ============ROWS = 1000000COLS = 10print(f"生成测试数据:{ROWS:,} 行 × {COLS} 列")data = np.random.random((ROWS, COLS))print(f"数据大小:约 {data.nbytes / 1024 / 1024:.2f} MB\n")# ============ 测试1:openpyxl ============print("=" * 60)print("测试 1: openpyxl")print("=" * 60)start_time = time.time()wb_openpyxl = OpenpyxlWorkbook()ws_openpyxl = wb_openpyxl.active# 写入表头for col in range(COLS): ws_openpyxl.cell(1, col + 1, f"列{col}")# 逐行写入数据for i in range(ROWS): for j in range(COLS): ws_openpyxl.cell(i + 2, j + 1, float(data[i, j]))wb_openpyxl.save("test_openpyxl.xlsx")elapsed_openpyxl = time.time() - start_timeprint(f" openpyxl 完成!")print(f" 耗时: {elapsed_openpyxl:.2f} 秒\n")# ============ 测试2:xlsxwriter ============print("=" * 60)print("测试 2: xlsxwriter")print("=" * 60)start_time = time.time()wb_xlsxwriter = xlsxwriter.Workbook("test_xlsxwriter.xlsx")ws_xlsxwriter = wb_xlsxwriter.add_worksheet()# 写入表头for col in range(COLS): ws_xlsxwriter.write(0, col, f"列{col}")# 逐行写入数据for i in range(ROWS): for j in range(COLS): ws_xlsxwriter.write(i + 1, j, float(data[i, j]))wb_xlsxwriter.close()elapsed_xlsxwriter = time.time() - start_timeprint(f" xlsxwriter 完成!")print(f" 耗时: {elapsed_xlsxwriter:.2f} 秒\n")# ============ 测试3:fastxlsx ============print("=" * 60)print("测试 3: fastxlsx")print("=" * 60)start_time = time.time()wb_fastxlsx = WriteOnlyWorkbook()ws_fastxlsx = wb_fastxlsx.create_sheet("Sheet1")# 写入表头ws_fastxlsx.write_row((0, 0), [f"列{col}" for col in range(COLS)], dtype=DType.Str)# 批量写入数据(一次性写入整个矩阵)ws_fastxlsx.write_matrix((1, 0), data, dtype=DType.Float)wb_fastxlsx.save("test_fastxlsx.xlsx")elapsed_fastxlsx = time.time() - start_timeprint(f" fastxlsx 完成!")print(f" 耗时: {elapsed_fastxlsx:.2f} 秒\n")# ============ 性能对比汇总 ============print("=" * 60)print(" 性能对比汇总")print("=" * 60)print(f"\n{'库名':<15} {'耗时(秒)':<12} {'相对速度':<12} {'内存占用'}")print("-" * 60)print(f"{'openpyxl':<15} {elapsed_openpyxl:>10.2f}s {1.0:>10.2f}x 高")print(f"{'xlsxwriter':<15} {elapsed_xlsxwriter:>10.2f}s {elapsed_openpyxl/elapsed_xlsxwriter:>10.2f}x 中")print(f"{'fastxlsx':<15} {elapsed_fastxlsx:>10.2f}s {elapsed_openpyxl/elapsed_fastxlsx:>10.2f}x 低")print("\n" + "=" * 60)print(" 性能冠军")print("=" * 60)print(f" fastxlsx 比 openpyxl 快 {elapsed_openpyxl/elapsed_fastxlsx:.1f} 倍")print(f" fastxlsx 比 xlsxwriter 快 {elapsed_xlsxwriter/elapsed_fastxlsx:.1f} 倍")# 清理测试文件import osfor f in ["test_openpyxl.xlsx", "test_xlsxwriter.xlsx", "test_fastxlsx.xlsx"]: if os.path.exists(f): os.remove(f) print(f" 已删除: {f}")

      实测效果

    适用场景

       完美适配(性能优先)

    1. 大批量数据导出 100万+行数据 数据库批量导出 定时报表生成
    2. 高频写入任务 每天生成数百个Excel 实时数据导出 ETL数据管道
    3. 性能敏感场景 API接口实时生成Excel 用户等待时间要求<10秒 服务器资源受限
    4. 多文件批处理 多部门报表 批量数据分割 并行数据处理

       不适合(功能优先)

    1. 需要复杂格式(颜色/字体/边框)→ 用openpyxl
    2. 需要公式计算 → 用openpyxl/xlsxwriter
    3. 需要图表/图片 → 用xlsxwriter
    4. 需要修改现有文件 → 用openpyxl
    5. 数据量<1万行且需要格式 → 用openpyxl

      如果你的工作涉及大量Excel数据处理,fastxlsx会成为你的生产力倍增器。

  • 文档: https://fastxlsx.readthedocs.io/
  • PyPI: https://pypi.org/project/fastxlsx/

      立刻尝试上面的性能测试代码,亲眼见证效率飙升。

      #fastxlsx #Excel #性能优化 #Python #高性能

    本文标题:fastxlsx:性能暴增10倍的Python Excel写入神器本文网址:https://www.sz12333.net.cn/zhzx/kexue/57168.html 编辑:12333社保查询网
  • 本站是社保查询公益性网站链接,数据来自各地人力资源和社会保障局,具体内容以官网为准。
    定期更新查询链接数据 苏ICP备17010502号-11