Eager read into Arrow
Pull a worksheet into a single pyarrow.RecordBatch when the sheet fits the job and you want the schema in hand immediately.
read_arrow(path, sheet_name)
Read-only data bridge
wolfxl-data reads one .xlsx worksheet at a time and hands the values to PyArrow or Polars as Arrow record batches. Creating a workbook, editing one, calculating formulas, rendering output, and building pivot tables all stay in the WolfXL engine.
wolfxl-data.xlsx worksheetsArrow record batchesPyArrow and Polars extrasPython 3.10 through 3.13
Compare Community and Commercial
PolyForm Shield License 1.0.0. Stable-ABI release wheels. Public package, proprietary terms. No runtime telemetry.
import wolfxl_data # One worksheet into a pyarrow.RecordBatch.batch = wolfxl_data.read_arrow("ledger.xlsx", "Q3", columns=["Account", "Amount"])print(batch.num_rows, batch.schema.names) # The same read, handed to Polars as a LazyFrame.frame = wolfxl_data.scan_polars("ledger.xlsx", "Q3", max_rows=100_000)print(frame.collect().height)Formula cells arrive as the results cached in the file, because a read-only bridge does not calculate. Recalculating a workbook before extraction is engine work.
Reads are scoped rather than all or nothing: name the sheet, project columns by field name or 1-based index, choose whether the first row is a header, set a start row and a row cap, and pick native or serial temporal values.
Pull a worksheet into a single pyarrow.RecordBatch when the sheet fits the job and you want the schema in hand immediately.
read_arrow(path, sheet_name)
Take the Arrow C stream yourself. The scanner exposes __arrow_c_stream__ and iterates record batches, with batch_rows, start_row, and max_rows setting the window that gets read.
scan_arrow(path, sheet_name, batch_rows=...)
Get a LazyFrame over the same read path, so the worksheet joins the rest of a Polars pipeline without a private conversion step.
scan_polars(path, sheet_name)
Strict mode is the default. A value that cannot be represented in its column type fails with the worksheet, field, and cell in the message instead of arriving as a silent null. Turning strict off records the loss mode in the Arrow schema metadata rather than hiding it.
The five-platform wheel set is built and verified. PyPI publication is still pending, so request early access instead of running an install command that cannot succeed yet.
Request early accessPublication will include binary wheels only. No source distribution or WolfXL engine source will be published.
The bridge is deliberately narrow. It is the read path and nothing more, so the line between extraction and the engine is easy to hold in production.
| Capability | wolfxl-data | WolfXL engine |
|---|---|---|
| Read XLSX worksheet values | Included | Included |
| Column projection and row windows on read | Included | Included |
| Workbook creation and modification | Not included | Included |
| Formula calculation | Not included | Included |
| Render, PDF, and image output | Not included | Included |
| Pivot table operations | Not included | Included |
| Autofilter and sort state | Not included | Included |
| Richer workbook feature compatibility | Not included | Included |
The wheel carries no Workbook class and no write, calculate, render, or pivot entry point. Reaching for one of those raises an AttributeError rather than quietly degrading, and importing the flagship wolfxl module is not part of this package.
The engine column covers the WolfXL product surface, not one edition. Which edition carries each engine capability is set out in the Community and Commercial comparison. Compare editions.
When the workflow moves past reading values, WolfXL is the path forward. It creates and modifies workbooks, calculates formulas, renders output, drives real pivot tables, evaluates autofilters, and covers a wider range of workbook features than a read-only bridge is meant to.