Skip to main content

xlstream

CI License

xlstream is a streaming Excel formula evaluation engine with Python bindings. It reads .xlsx files row-by-row, evaluates formulas in a single (or two-pass) streaming traversal (no dependency graph, no full-workbook buffering), and writes the results to a new .xlsx — all in bounded memory regardless of file size.

We are not building a general-purpose spreadsheet engine. We are building the fastest, leanest Excel formula evaluator — supporting ~465 of Excel's ~500 functions, everything that fits a streaming architecture.

Performance

3x less memory and 1.4x faster than LibreOffice. No install. Embeddable. Full benchmarks

Benchmark: 100k rows x 50 cols (20 data + 30 formula). Intel i9-10910, 128 GB RAM.

Engine Version Wall-clock Peak RSS Architecture
xlstream (1 worker) 0.2.1 26.5s 643 MB Streaming (2-pass)
xlstream (4 workers) 0.2.1 23.0s 681 MB Streaming (2-pass)
LibreOffice 26.2 31.9s 2,081 MB Graph
Excel (20 threads) 16.108.2 ~99s ~430 MB Graph
formualizer 0.5.6 2h 8m 11,322 MB Full dependency graph

Supported functions

225 functions + 13 operators across 12 categories. Full list with cross-reference.

Category Count Examples
Operators 13 +, -, *, /, ^, &, %, comparisons
Logical 11 IF, IFS, SWITCH, IFERROR, AND, OR, NOT, XOR
Aggregates 15 SUM, SUMIF, SUMIFS, AVERAGE, COUNTIF, MEDIAN
Lookups 7 VLOOKUP, XLOOKUP, INDEX/MATCH, HLOOKUP, CHOOSE
Text 19 LEFT, UPPER, TRIM, CONCAT, TEXT, FIND, SUBSTITUTE
Date 12 TODAY, YEAR, EDATE, EOMONTH, DATEDIF, NETWORKDAYS
Math 23 ROUND, MOD, ABS, SQRT, LOG, SIN, PI, FLOOR
Info 10 ISNUMBER, ISTEXT, ISERROR, ISBLANK, ISREF, TYPE
Financial 6 PMT, PV, FV, NPV, IRR, RATE

Excel has ~500 functions. ~465 are streaming-compatible. We're adding more each release — see the roadmap.

Install

pip install xlstream

Usage

import xlstream

result = xlstream.evaluate("input.xlsx", "output.xlsx")
# {'rows_processed': 100000, 'formulas_evaluated': 2999970, 'duration_ms': 23000}

# Parallel (row-sharded across cores)
result = xlstream.evaluate("input.xlsx", "output.xlsx", workers=8)

Error handling

try:
    xlstream.evaluate("input.xlsx", "output.xlsx")
except xlstream.UnsupportedFormula as e:
    print(e)  # names the cell, formula, and reason
except xlstream.FormulaParseError as e:
    print(e)
except OSError as e:
    print(e)  # file not found, corrupt xlsx

License

Dual-licensed under Apache-2.0 or MIT, at your option.

Metadata

Release files for xlstream 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xlstream 0.4.0
File Size Uploaded
xlstream-0.4.0.tar.gz 632.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for xlstream 0.4.0
File
xlstream-0.4.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
xlstream-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
xlstream-0.4.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
xlstream-0.4.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
xlstream-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 8.4 MB

Release files / xlstream-0.4.0.tar.gz

Download URL xlstream-0.4.0.tar.gz
Size 632.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ee70e9a9cc0d383ec9d3960bad41b54dc627b776d602976d28e9b06e2d4fea70
BLAKE2b-256 checksum
How to use checksums
029d256c5043065ef1eba3df0f26070d4a2b4bcdfc13c5b468f93e408f4262d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release files / xlstream-0.4.0-cp39-abi3-win_amd64.whl

Download URL xlstream-0.4.0-cp39-abi3-win_amd64.whl
Size 1.6 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b85c339ca2ea82815c0463dcdce732d0838d265e3074cd7dcdf352db942b5c8c
BLAKE2b-256 checksum
How to use checksums
3a5a41bc425ccfa8b27be82222a6f8bc75a87a71c4c3497b0c2bc7a96b41eb54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release files / xlstream-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL xlstream-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
81eb99ed7fe26aceda6620a24fd417ffb27e7c31d03c6aba137d040ab48cd008
BLAKE2b-256 checksum
How to use checksums
51644a8dbcc35bea22ae25cf6b10d4166a33a208e486210ce90b7b77de778284
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release files / xlstream-0.4.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL xlstream-0.4.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
afc9d59fff8ee5b1f0799fa6e09615e90909cc567e29c86aabbdf165787dce4b
BLAKE2b-256 checksum
How to use checksums
d0927c517ddae7fac64c296fc31972f7a54591614bb9ff6b1276f90d86cc219b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release files / xlstream-0.4.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL xlstream-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f8b471444f529c4d5c951db11ddc7f663a266e6af13fa010720e112c75a330cf
BLAKE2b-256 checksum
How to use checksums
bcf963d90457656f12cbbd35c38a6807581e2c5c52e4d38dc20bea93e4d67f2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release files / xlstream-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL xlstream-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6aac52c73e7042dfb4068393ebd81e4aab25ea78ac1acfd3687adc1eefa7c7c4
BLAKE2b-256 checksum
How to use checksums
80a61777454035b55bfe3ab51d324c0df2e166cdfb98b20a57dce94d703a3f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

6 release files

0.3.0

6 release files

0.2.1

6 release files

0.2.0

6 release files

0.1.1

6 release files

0.1.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page