wolfxl

Compare

The evidence, at full depth.

The homepage carries the headline results. This page keeps the complete matrices: capability coverage across the field, speed measurements against maintained alternatives, and what comparable capability costs elsewhere. Methodology, compatibility boundaries, and known limitations stay linked from each section.

Capability fit

One engine, not three tools and a workaround.

Most alternatives cover only part of the read, write, and modify surface that Excel automation teams need.

Capability comparison across Python OSS, Rust crates, other ecosystems, and commercial Python-capable Excel libraries.
SurfacePython OSSRust cratesOther ecosystemsCommercial Python-capable
CapabilityopenpyxlXlsxWriterpython-calaminefastexcelrust_xlsxwriterumyaoffice_oxideSheetJS Pro JSGcExcel .NET/JavaSyncfusion .NETSpire .NETLibXL CWolfXLAspose
Read xlsxSource: competitive landscape 2026-06-15 de-facto Python standard write-only read-only by design read-only Arrow-shaped value extraction write-only Rust R/W/M library simple R/W/M, unverified per vendor page 2026-07-07 .NET and Java commercial workbook API .NET commercial workbook API .NET, Java, Python via .NET commercial API C bindings Rust and Python openpyxl-compatible package commercial workbook API
Write xlsxSource: competitive landscape 2026-06-15 broad API mature pure-Python writer read-only by design read-only value-extraction scope very fast writer Rust R/W/M library simple R/W/M, unverified Pro Edit, per vendor page 2026-07-07 .NET and Java commercial workbook API .NET commercial workbook API .NET, Java, Python via .NET commercial API C bindings Rust and Python openpyxl-compatible package commercial workbook API
Modify existing (surgical, preserves untouched parts)Source: competitive landscape 2026-06-15 rebuilds whole file on save and can drop unsupported workbook parts write-only read-only by design read-only value-extraction scope write-only can modify, but uses full-rewrite modify model simple XLSX edit API, unverified Pro Edit claims update with perfect fidelity, per vendor page 2026-07-07 commercial edit and fidelity features commercial edit support, saved-record status unverified commercial workbook edit support C bindings with workbook edit support surgical ZIP patching preserves charts, pivots, slicers, and VBA in place commercial workbook edit support
Native pivot tables born-populatedSource: competitive landscape 2026-06-15 L1 preserve, no public cache-record regeneration engine L0 for editing read-only by design read-only value-extraction scope write-only, L0 edit Rust required set has no pivot creation simple XLSX edit API, unverified PivotTable/PivotChart generation add-on, per vendor page 2026-07-07 L3 born-populated records L2 definition and refreshOnLoad, saved-record status unverified L3 with CalculateData and IsRefreshOnLoad not cited for born-populated pivots in landscape doc L3 born-populated pivot caches L4 pivot recompute
openpyxl-compatible APISource: docs/migration/compatibility-matrix.md and competitive landscape 2026-06-15 reference API separate Python writer API separate reader API Arrow-shaped API Rust writer API Rust API Rust API JavaScript ecosystem .NET and Java ecosystem .NET ecosystem .NET, Java, Python via .NET ecosystem C bindings drop-in replacement across the supported openpyxl API surface commercial API, not openpyxl-compatible
Formula calculationSource: competitive landscape 2026-06-15 reads cached values, no recalc no calc engine no calc engine no calc engine no calc engine no calc engine no calc engine Formula Calculator, per vendor page 2026-07-07 450+ functions including dynamic arrays and spill calc feature listed in paid competitor table full calc engine for Excel 97-2019 functions not cited for formula calculation in landscape doc 67-function builtin engine, Rust port in progress Full calc via CalculateData
Runs headless (no Excel/COM)Source: competitive landscape 2026-06-15 headless Python package headless Python package headless Python binding headless Python package headless Rust crate headless Rust crate headless Rust crate, unverified Renderer plus browser and server JavaScript, per vendor page 2026-07-07 .NET and Java server library .NET server library .NET, Java, Python via .NET server library C bindings headless Python and Rust package server-side commercial library
Python-nativeSource: competitive landscape 2026-06-15 Python Python Python Rust-backed binding Python Rust-backed binding Rust ecosystem Rust ecosystem Rust ecosystem JavaScript ecosystem .NET and Java ecosystem .NET ecosystem .NET, Java, and Python via vendor bridge ecosystem C bindings Rust plus Python package Aspose cross-stack commercial ecosystem
Commercial support with SLASource: competitive landscape 2026-06-15 and vendor pricing pages 2026-07-07 open-source project open-source project open-source project open-source project open-source project open-source project open-source project, unverified quote-only commercial licensing commercial per-developer license commercial license with community tier commercial license with free tier commercial licenses commercial package with enterprise tier commercial per-developer license

Competitor capabilities summarized from vendor documentation and public pages; re-verify before relying on them.

Measured against selected maintained alternatives

The clean-source WolfXL 2.1.0 release-artifact benchmark dated 2026-08-16 compares matched operations. Direct Rust rows use the same API surface; fastexcel and python-calamine rows compare public Python APIs. The visual scale is capped at 8x while each numeric label retains the measured ratio.

calamine 0.36.1

Read formula text

2.18x

Read cell values

1.17x

DuckDB (excel extension) 1.5.5

Write plain values (200,000 x 8)

1.34x

closest write rival in the field; SQL engine writing xlsx from an already-registered DataFrame

Read cell values (200,000 x 8)

1.28x

DuckDB returns Arrow-backed results, not editable workbooks

Write mixed types (10,000 x 5)

0.74x

honest loss: DuckDB wins the small mixed-type write outright (25 ms vs 35 ms) when writing from an already-registered DataFrame

fastexcel 0.20.2

Read cell values

1.84x

Read cell values (200,000 x 8)

1.04x

near parity: fastexcel is read-only and returns Arrow tables rather than Python cell values

formulas 1.3.4

Calc: re-evaluate one changed input (40,001 formula cells)

652.23x

semantics differ: formulas re-solves its whole graph per change rather than invalidating incrementally; shown for scope honesty

Calc: load + evaluate all (40,001 formula cells)

54.64x

load_compile alone takes 57.6 s at this size

office_oxide 0.1.8

Write cell by cell

2.29x

Modify an existing workbook

2.17x

Read cell values

1.65x

pandas 3.0.5

Write plain values (200,000 x 8)

14.36x

openpyxl engine, pandas' default xlsx writer path

Read cell values (200,000 x 8)

3.42x

calamine read engine, pandas' fastest xlsx reader

Polars 1.43.2

Write plain values (200,000 x 8)

8.45x

DataFrame I/O; wraps XlsxWriter for xlsx writes

Read cell values (200,000 x 8)

1.02x

near parity: Polars returns a DataFrame; wolfxl returns editable Python workbook cells

pycel 1.0b30

Calc: load + evaluate all (40,001 formula cells)

7.25x

openpyxl-authored fixture with no cached values, so every engine genuinely evaluates; exact-value asserted on all engines

Calc: re-evaluate one changed input (40,001 formula cells)

4.60x

pycel's dependency-graph invalidation is the strongest incremental rival in the field

pyexcel 0.7.6

Read cell values (200,000 x 8)

38.36x

wrapper over an openpyxl backend via pyexcel-xlsx

Write plain values (200,000 x 8)

8.82x

wrapper over an openpyxl backend via pyexcel-xlsx

PyExcelerate 0.13.0

Write plain values (200,000 x 8)

5.01x

write-only specialist; cannot read or edit workbooks

Write unique strings (100,000 x 5)

4.34x

shared-strings stress case (500k unique strings)

pylightxl 1.61

Read cell values (200,000 x 8)

24.28x

pure-Python; its writer scales quadratically (241 s on the large plain write), so write rows are recorded as DNF in the raw results rather than charted

python-calamine 0.8.2

Read cell values

2.33x

Read cell values (200,000 x 8)

1.49x

read-only binding returning Python values

rust_xlsxwriter 0.96.0

Write styled cells

2.25x

Write cell by cell

2.13x

Write formula cells

1.93x

Write unique strings

1.89x

Write multiple sheets

1.88x

Tablib 3.10.0

Write plain values (200,000 x 8)

15.37x

Dataset wrapper over an openpyxl backend

umya-spreadsheet 3.0.1

Modify an existing workbook

10.46x

Write cell by cell

5.05x

Read cell values

4.62x

xlcalculator 0.5.0

Calc: re-evaluate one changed input (40,001 formula cells)

803.93x

semantics differ: xlcalculator 0.5.0's incremental path degrades superlinearly at this size; shown for scope honesty

Calc: load + evaluate all (40,001 formula cells)

10.61x

fastest pure-Python engine at small sizes; its evaluator degrades as cell count grows

xlsx2csv 0.8.6

Read cell values (200,000 x 8)

8.93x

read-only; transcodes xlsx to CSV text rather than cell values

xlsxwriter 0.6.1

Write cell by cell

3.88x

Write multiple sheets

3.88x

Write styled cells

3.81x

Write formula cells

3.61x

Write unique strings

3.31x

  • Rust rows use same-surface direct Rust APIs except the fastexcel and python-calamine public-Python comparisons.
  • Benchmarks are dated 2026-08-16 and come from one clean-source, freshly built WolfXL 2.1.0 release-artifact rerun recorded in the pinned JSON artifact.
  • Rows below 1x are marked as losses rather than hidden or relabeled.
  • Ecosystem rows dated 2026-08-19 come from the thirteen-library benchmark committed in the public SynthGL/wolfxl-community repository: AMD EPYC 9655, x86_64 Linux, Python 3.13, median of 5 rounds, measured with the public wolfxl 2.0.1 PyPI wheel. Each library is measured only inside its supported scope; Arrow- and DataFrame-returning engines (fastexcel, Polars, DuckDB) do not produce editable workbooks. Honest losses are shown as-is and highlighted.
  • Calc rows dated 2026-08-19 compare WolfXL 2.1 native recalculation (pre-release wheel built from pinned source) against pure-Python formula engines: AMD EPYC 9655, x86_64 Linux, Python 3.13, median of 3 rounds, on an openpyxl-authored 40,001-formula-cell fixture with no cached values, exact-value asserted on every engine. Incremental recalc semantics differ per engine and are disclosed per row. The pinned artifact ships with the 2.1 release evidence.
Benchmark identifiers
  • Calc: load + evaluate all (40,001 formula cells) calc_load_compile_evaluate_all_40k
  • Calc: re-evaluate one changed input (40,001 formula cells) calc_reevaluate_change_40k
  • Modify an existing workbook modify_existing_workbook_plain
  • Read formula text read_formula_text
  • Read cell values (200,000 x 8) read_values_large
  • Read cell values read_values_plain
  • Write cell by cell write_cell_by_cell_plain
  • Write formula cells write_formula_cells
  • Write mixed types (10,000 x 5) write_mixed
  • Write multiple sheets write_multi_sheet_plain
  • Write plain values (200,000 x 8) write_plain_large
  • Write styled cells write_styled_cells
  • Write unique strings (100,000 x 5) write_unique_strings
  • Write unique strings write_unique_strings_plain

2026-08-16 release artifact benchmark rerun

2026-08-19 thirteen-library ecosystem benchmark, SynthGL/wolfxl-community

2026-08-19 calc-field benchmark, wolfxl 2.1 native calc pre-release, AMD EPYC 9655

What comparable capability costs elsewhere

Value comparison for WolfXL and comparable spreadsheet libraries
ProductPricingSaaS / redistribution rightsPython-native
WolfXLWolfXL$299/dev/yr; $1,499/yr up to 5; Business from $4,999/yr; Enterprise from $10,000/yr; OEM from $25,000/yrSales-assisted OEM plan from $25,000/yearYesRust plus Python package
Aspose.Cells$1,199 Developer Small Business / $3,597 Developer OEM required for SaaS / $23,980 SDKDeveloper OEM required for SaaS redistributionNoAspose cross-stack commercial ecosystem
LibXL199 EUR/dev/platform; 1,099 EUR enterpriseEnterprise tier cited at 1,099 EURNoC bindings
IronXL$999 Lite to $5,999 Unlimited plus $1,999 OEM/SaaS add-on$1,999 OEM/SaaS add-onNo.NET ecosystem
Spire.XLSapprox $799+/dev, unverified(unverified)Commercial terms require re-checkNo.NET, Java, and Python via vendor bridge ecosystem
GcExcel$999 standard / $2,799 unlimited-distribution$2,799 unlimited-distribution tierNo.NET and Java ecosystem
SheetJS ProQuote-onlyQuote-only per-build-tier commercial licensingNoJavaScript ecosystem
EPPlusper-dev subscription, dual license(unverified)Commercial use requires paid licensing; terms require re-checkNo.NET ecosystem

WolfXL separates self-service Developer and Team plans from sales-assisted Business, Enterprise, and OEM licensing. Internal deployment and redistribution scope are priced independently rather than bundled into one unlimited tier.

Competitor prices from vendor pricing pages dated 2026-07-07 where marked verified; re-check before purchase decisions.