Excel reports. Python simplicity.
Turn Python data into Excel workbooks — from everyday reports to large exports.
Read and write XLSB and XLSX, bring your pandas or polars DataFrames, and refresh existing XLSM templates while preserving their macros. Style the result with charts, tables, formatting, and cell notes — all from Python.
Get started · Usage guide · Examples · Benchmarks
Built for speed
2.5 million cells. Ready in seconds.
| XLSB with C acceleration | Windows | WSL2 |
|---|---|---|
| Write | 1.46 s | 1.17 s |
| Read | 0.60 s | 0.43 s |
C acceleration delivered over 10× faster XLSB reads than xlspy's pure-Python fallback in both environments. Figures are medians of three runs on a 50,000 × 50 dataset (Windows: Python 3.14.6; WSL2: Python 3.14.4). See the full comparisons, hardware, and methodology →
Made for the work behind the workbook
| Your workflow | What xlspy brings |
|---|---|
| Export large datasets | XLSB and XLSX output from a generator or database cursor, with bounded memory via useSharedStrings=False, and C acceleration for supported read and write paths. A failed export publishes no partial workbook (failure handling). |
| Deliver polished reports | Cell styles, number formats, formulas, dropdown validation, hyperlinks, images, print setup, charts (column, bar, line, area, pie, doughnut, scatter, stacked), tables, and conditional formatting. Both XLSX and XLSB support them; see the feature support table. |
| Work with DataFrames | Export pandas or polars data directly to either format. |
| Refresh a familiar template | Replace data in XLSB, XLSX, or XLSM while keeping workbook structure, styles, and unrelated sheets. |
| Connect a data pipeline | Read rows as a generator and stream updates from a database cursor. |
The core library has no required Python package dependencies. Add pandas or polars support when you need it. Microsoft Excel is not required for the core read and write APIs.
Quick start
Requires Python 3.12 or newer.
pip install xlspy
Create a report with a styled header and formatted values:
from xlspy import F, Style, XlsxWriter
with XlsxWriter("sales.xlsx") as workbook:
workbook.add_sheet("Sales")
workbook.write_sheet(
[
["Product", "Revenue"],
["Coffee", (12500, F.THOUSANDS_SEP)],
["Tea", (8400, F.THOUSANDS_SEP)],
],
header_style=Style(bold=True, fill="#183C52", font_color="#FFFFFF"),
)
For binary Excel output, use XlsbWriter and a .xlsb filename with the same
API. Explore formatting, charts, and tables
when your report needs more detail.
Bring your data. Keep your workflow.
Already using pandas or polars? Export with to_xlsx(df, "report.xlsx")
or to_xlsb(df, "report.xlsb").
See DataFrame examples →
Have an Excel template? Refresh its data with XlsxUpdater, XlsbUpdater,
or XlsmUpdater. XLSM updates preserve the existing VBA project.
Update a workbook →
Need to read the results? Use ExcelReader for XLSB and XLSX, with the same
API for both formats.
Read a workbook →
Explore further
| Resource | What you will find |
|---|---|
| Usage guide | Detailed examples, API options, and format support limits. |
| Runnable examples | Scripts for reports, DataFrames, and workbook updates. |
| Benchmarks | Read and write comparisons, dataset details, and reproduction commands. |
| Validation | Windows and WSL2 test results, compatibility checks, and known limitations. |
| Test suite | How to run tests and measure coverage. |
| Changelog | Releases, improvements, and fixes. |
Metadata
Release files for xlspy 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| xlspy-0.10.0.tar.gz | 423.8 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 5.0 MB
Release files / xlspy-0.10.0.tar.gz
| Download URL | xlspy-0.10.0.tar.gz |
|---|---|
| Size | 423.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8091d6dcf3879770403d985e92564d937937870cd2b68fbf59eed7aeb8ba9e9e
|
|
BLAKE2b-256 checksum How to use checksums |
820be98738d754030cc8b8045287731330a0640e6f586b721c1f999f005bcb11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp314-cp314-win_amd64.whl
| Download URL | xlspy-0.10.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 322.5 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
84956c4fdecb11f7fea9151ddc2653418f5a52729af7ce03bb546b621b745aec
|
|
BLAKE2b-256 checksum How to use checksums |
d337f05b144bd11d239f87e9f7a2c397ac063d4fbd294a80b006749c27101114
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | xlspy-0.10.0-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 438.4 kB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
151a6c282eafc8aa36a72aff90169734455fa6e13e9ba832d19e89105f3c0e09
|
|
BLAKE2b-256 checksum How to use checksums |
4023f6b0a123a996abb569ccb1935ffbd64f45f9f438317477291b3939bd4a08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | xlspy-0.10.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 441.0 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4cc5a7c4d03d3500e8905e0ad92aadc93862b8b6f9642534d8804484b9471f04
|
|
BLAKE2b-256 checksum How to use checksums |
ace21542991372f9bc65d614d0dc527d6cd492d8c494cfb97535b4178329b168
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | xlspy-0.10.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 320.7 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7047b1e7fcc7464e4f1c11755774177e33cb15805831b20499d2d7a02ad61af9
|
|
BLAKE2b-256 checksum How to use checksums |
65ba0e6b2209497c82afd3c83b67c8d44fccf484feb9066b2847c554f4ac1e46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp313-cp313-win_amd64.whl
| Download URL | xlspy-0.10.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 321.0 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4062d76ac0334026f12ccd7ea45204679e1e2bf4fc7350e4482fb25cf5c676ed
|
|
BLAKE2b-256 checksum How to use checksums |
e239719b86fb36ccb1a55ea8a24fdf3fca6e897d53fb9f31e0fc044a293b42e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | xlspy-0.10.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 438.7 kB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
28c7ac5dbec9feb5e4975d423366466ada4f5f8f2f18c846b964e065d5140a4e
|
|
BLAKE2b-256 checksum How to use checksums |
d54845def814aa779a6ad527761db79b760d25806bfa2ba0d0b64608a9bc1fdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | xlspy-0.10.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 441.3 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
98b08e3a8b54f662849ba914c6a8b3f722b79945bba94951a41280f6e4dfbd26
|
|
BLAKE2b-256 checksum How to use checksums |
7a0792e26a6c5a514eac04ce75246c9aa08b1f2f977a1e13fe0d6afd1f5b0b2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | xlspy-0.10.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 320.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
81405845a11a5feb70a93169b49702a95fc91e2a3ab7e121e7281e5d1743735c
|
|
BLAKE2b-256 checksum How to use checksums |
6ba1e4bc38513c9ca3b3a60eba3eb2c30b6cca3c094532e3014b2f3eb527af86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp312-cp312-win_amd64.whl
| Download URL | xlspy-0.10.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 321.0 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
50e0e76c0b8d948cbe234f11e89dfc6d4c5709e9ad4eac8edf59151baadbc912
|
|
BLAKE2b-256 checksum How to use checksums |
98eaf2e520f917d56fde91f17a48152302069533c6948ce8b869b991c7ec9780
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | xlspy-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 438.8 kB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
68ab13b281f81725f869e4e96078689c564067b464bd60e364fe031c2156ef27
|
|
BLAKE2b-256 checksum How to use checksums |
44e28628ef3af8a473724eaede9c61d4814654fa1a9530ab80a8468d12006304
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | xlspy-0.10.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 441.3 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4c01a12a6498c7ab8b724cb2320d9a281972956df68d1ca1fdf026f0a7999992
|
|
BLAKE2b-256 checksum How to use checksums |
cda46142e2cd39297391838c60189414da96c8d0e0cfdb0e6e4841558fdbd168
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logRelease files / xlspy-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | xlspy-0.10.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 320.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a5b2343a49f506db88ed52e2dc2e5a95b917740180553424d926e9a484842573
|
|
BLAKE2b-256 checksum How to use checksums |
ae7d6d0d7fbb3794728ee362f5623395fd60fc9641ef304f6ca054e5bd5b9086
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 24, 2026.
Transparency logSecurity for xlspy 0.10.0
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.
Full provenance
All 13 files in this release have been uploaded with provenance metadata.
Attestation for xlspy-0.10.0.tar.gz
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 Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.