fastpyxl

A high-performance Python library to read/write Excel 2010 xlsx/xlsm files

AI / Agents

Skills
llms.txt
llms-full.txt

Developers

See AUTHORS

Author

Meta

Requires: Python >=3.11

A high-performance, statically typed drop-in replacement for openpyxl >= 3.0.0 on Python >= 3.11.

fastpyxl reads and writes Excel 2010+ xlsx/xlsm/xltx/xltm files with the same API as openpyxl 3.x — just change your import:

## before
from openpyxl import Workbook, load_workbook

## after
from fastpyxl import Workbook, load_workbook

No other code changes are required for supported openpyxl 3.x usage. APIs removed before openpyxl 3.0 (and behaviour only present in openpyxl 2.x) are intentionally unsupported. See the compatibility guide for details.

Performance

Benchmarked on a real-world 5.2 MB IMF/World Bank workbook (887,370 cells, 97k formulas). Median of 5 runs, Python 3.12, openpyxl 3.1.5:

Benchmark comparison: fastpyxl vs openpyxl
Operation openpyxl fastpyxl Change
Load workbook 7.29s 5.58s -23.5%
Save workbook 5.70s 5.74s +0.6%
Read-only iteration 4.84s 4.07s -15.9%

Key optimizations since 1.0.0: inlined cell parsing, O(1) sheet lookup, formula translation fast path, VBA archive filtering, empty-cell skip, and cached sheet names. See the changelog for details.

Installation

pip install fastpyxl

Quick start

from fastpyxl import Workbook

wb = Workbook()
ws = wb.active

ws["A1"] = 42
ws.append([1, 2, 3])

import datetime
ws["A2"] = datetime.datetime.now()

wb.save("sample.xlsx")

Key features

  • Drop-in API compatibility with openpyxl >= 3.0.0 (Python >= 3.11)
  • Static typing throughout
  • Optimized cell parsing, coordinate lookups, and style deduplication
  • Read-only and write-only modes for large files
  • Charts, images, comments, data validation, pivot tables
  • Conditional formatting and rich text
  • Pandas DataFrame integration

Security

By default fastpyxl does not guard against quadratic blowup or billion laughs XML attacks. To guard against these attacks install defusedxml.

Documentation

Full documentation: https://promptlytechnologies.com/fastpyxl/

Acknowledgements

fastpyxl is a fork of openpyxl. All credit to Eric Gazoni, Charlie Clark, and the openpyxl contributors whose work this project builds upon.

License

MIT. See LICENSE for details.