Skip to main content

xlsxturbo

High-performance Excel writer with automatic type detection. Written in Rust, usable from Python.

CI PyPI Python License: MIT

xlsxturbo exports pandas and polars DataFrames and CSV files to .xlsx. It uses Rust for the hot path and keeps the Python API small enough to drop straight into a script, a report job, or a batch pipeline. Roughly 7-9x faster than pandas + openpyxl on the reference benchmarks, with the Excel features those exports usually need — tables, conditional formatting, charts, data validation, images — available as focused keyword arguments rather than a workbook object model.

Full documentation · Capability matrix · Changelog

Install

pip install xlsxturbo

Wheels are published for Python 3.9+ on Linux, Windows, and macOS. There are no runtime dependencies beyond the interpreter.

Export a DataFrame

import pandas as pd
from xlsxturbo import df_to_xlsx

df = pd.DataFrame({
    "product": ["Widget", "Gadget", "Gizmo"],
    "price": [19.99, 34.50, 8.75],
    "in_stock": [True, False, True],
    "restock": pd.to_datetime(["2024-03-01", "2024-03-15", "2024-04-01"]),
})

df_to_xlsx(df, "products.xlsx", table_style="Medium2", autofit=True)

Types carry across without configuration: numbers stay numbers, booleans become Excel booleans, and dates and datetimes become real Excel date values with a display format attached. polars DataFrames work the same way — neither library is a dependency.

Convert a CSV

from xlsxturbo import csv_to_xlsx

csv_to_xlsx("sales.csv", "sales.xlsx")

Types are detected from the file's text. There is also a command-line tool for the same job, though it is not included in the PyPI wheel — it has to be built from source. See CSV conversion.

What it can do

  • DataFrame and CSV export — pandas, polars, and CSV in, .xlsx out
  • Excel tables with 61 built-in styles, autofilter, and banded rows
  • Formatting — header and per-column styles, number formats, per-side borders, alignment, wrapping, auto-fit and explicit column widths, row heights, merged ranges, rich text
  • Conditional formatting — colour scales, data bars, icon sets
  • Formulas — calculated columns and workbook-level defined names
  • Native Excel charts and in-cell sparklines, both editable in Excel
  • Data validation — dropdowns, numeric ranges, text-length constraints
  • Cell-level extras — arbitrary cell writes, hyperlinks, comments, checkboxes, images, textboxes
  • Multi-sheet workbooks with per-sheet option overrides
  • Constant memory mode for very large exports, and optional parallel CSV parsing
  • Atomic writes — a failed export never truncates the file already at that path

The capability matrix is the authoritative list: it is generated from the source and shows which options each function accepts, which are overridable per sheet, and which survive constant-memory mode.

Performance

On 100,000 rows x 50 columns of mixed types, xlsxturbo is about 4.6x faster than polars, 7x faster than pandas + xlsxwriter, and 9.3x faster than pandas + openpyxl. Absolute timings are system-specific; the ratios are stable. Full tables, test systems, and methodology are on the performance page, and both benchmark suites live in benchmarks/ so you can measure your own hardware.

Known limitations

  • Write-only. xlsxturbo creates workbooks; it cannot open or modify an existing one.
  • Timezone-aware datetimes are written as their local wall-clock value — Excel has no timezone concept, so the UTC offset is not preserved.
  • Integers above 2^53 are written as text to avoid silent precision loss.
  • Durations (Timedelta / timedelta64) are written as text; Excel has no duration type.

The compatibility page has the complete list with the workaround for each.

Project status

  • Production-ready for the documented DataFrame and CSV export workflows.
  • Tested in CI on Python 3.9 and 3.12 across Linux, Windows, and macOS, plus Python 3.14 on Linux.
  • SemVer: breaking API changes require a major version bump.
  • Advanced Excel features are exposed through focused parameters rather than a full workbook object model. That is a deliberate scope boundary, not a gap to be filled.

Contributing

Setup takes about five minutes and is described in CONTRIBUTING.md, along with the exact lint, type, and test commands CI runs. Security reports go through the process in SECURITY.md.

License

MIT

Release files for xlsxturbo 0.21.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 xlsxturbo 0.21.0
File Size Uploaded
xlsxturbo-0.21.0.tar.gz 395.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for xlsxturbo 0.21.0
File
xlsxturbo-0.21.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
xlsxturbo-0.21.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
xlsxturbo-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 6.1 MB

Release files / xlsxturbo-0.21.0.tar.gz

Download URL xlsxturbo-0.21.0.tar.gz
Size 395.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8f7402c56e65a4c1f1b2823e30d720c16a9c059e23e6ca25da3f4b16ee978c58
BLAKE2b-256 checksum
How to use checksums
ca6f514ead6f17c5aa75d001e5c34c6d686542008dd070c4706aa7147cfd2d3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release files / xlsxturbo-0.21.0-cp39-abi3-win_amd64.whl

Download URL xlsxturbo-0.21.0-cp39-abi3-win_amd64.whl
Size 1.2 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
47c9ae15cb1b2d4faa60e65163fd1bb3c72939c579cc1954112662a0dd6bce03
BLAKE2b-256 checksum
How to use checksums
4ca505a459ede0fb3b1546782ca5d83165d56fa2a576f448f8f56e26ddd7dedd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release files / xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
781c4d985f87484207668cb7f4bce06598f32cc8b6980351f6393d1b490e62dd
BLAKE2b-256 checksum
How to use checksums
ee56cdc543979602eb856044ac96f9ae3dd6269b52745e921f6581f7dce98059
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release files / xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL xlsxturbo-0.21.0-cp39-abi3-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
25a66574766886cd5990be897aefdab20945aa6b8562e0081a180363aee70061
BLAKE2b-256 checksum
How to use checksums
d19ac20d43bc9519192d73b44e59a9d062d2ed65f115b7c503c29acb39e37f86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release files / xlsxturbo-0.21.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL xlsxturbo-0.21.0-cp39-abi3-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
42a4f8ef5075c07c57955033f11772dc8e80c8ed1e8cce43bafc79f9f3e57571
BLAKE2b-256 checksum
How to use checksums
772c4ac457ef8f95c0cd568f87598ad28c7ff2e5edf120346dbfa344af341059
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release files / xlsxturbo-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL xlsxturbo-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 1.1 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c40b6a529c63718c577aa84583533f94ba4af439b8dbee9bce79e26a3c39b930
BLAKE2b-256 checksum
How to use checksums
5e1ebaf047b48345eeca88176f858dc0c7ac7227427ff538e25d641b2fd7b9d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 30, 2026.

Transparency log

Release history Release notifications | RSS feed

1.6.0

6 release files

1.5.1

6 release files

1.5.0

6 release files

1.4.1

6 release files

1.4.0

6 release files

1.3.0

6 release files

1.2.0

6 release files

1.1.2

6 release files

1.1.1

6 release files

1.1.0

6 release files

1.0.0

6 release files

This release

0.21.0 This release

6 release files

0.20.0

6 release files

0.19.1

6 release files

0.19.0

6 release files

0.18.0

6 release files

0.17.2

6 release files

0.17.1

6 release files

0.16.2

6 release files

0.16.1

6 release files

0.16.0

6 release files

0.15.5

6 release files

0.15.1

6 release files

0.15.0

6 release files

0.14.1

6 release files

0.14.0

6 release files

0.13.0

6 release files

0.12.5

6 release files

0.12.3

7 release files

0.12.2

6 release files

0.12.1

6 release files

0.12.0

6 release files

0.11.0

6 release files

0.10.6

6 release files

0.10.4

6 release files

0.10.3

6 release files

0.10.1

6 release files

0.9.0

6 release files

0.8.0

6 release files

0.7.0

8 release files

0.6.0

8 release files

0.4.1

8 release files

0.4.0

8 release files

0.3.0

8 release files

0.1.0

8 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