High-performance CSV to XLSX converter with automatic type detection
Project description
xlsxturbo
High-performance CSV to XLSX converter with automatic type detection. Written in Rust, usable from Python.
Features
- Automatic type detection from CSV strings:
- Integers and floats → Excel numbers
true/false→ Excel booleans- Dates (
2024-01-15,15/01/2024, etc.) → Excel dates with formatting - Datetimes (ISO 8601) → Excel datetimes
NaN/Inf→ Empty cells (graceful handling)- Everything else → Text
- ~25x faster than pandas + openpyxl
- Memory efficient - streams data with 1MB buffer
- Available as both Python library and CLI tool
Installation
pip install xlsxturbo
Or build from source:
pip install maturin
maturin develop --release
Python Usage
import xlsxturbo
# Convert CSV to XLSX with automatic type detection
rows, cols = xlsxturbo.csv_to_xlsx("input.csv", "output.xlsx")
print(f"Converted {rows} rows and {cols} columns")
# Custom sheet name
xlsxturbo.csv_to_xlsx("data.csv", "report.xlsx", sheet_name="Sales Data")
# Check version
print(xlsxturbo.__version__)
CLI Usage
xlsxturbo input.csv output.xlsx [--sheet-name "Sheet1"] [-v]
Options
-s, --sheet-name: Name of the Excel sheet (default: "Sheet1")-v, --verbose: Show progress information
Example
xlsxturbo sales.csv report.xlsx --sheet-name "Q4 Sales" -v
Performance
Benchmarked on 525,684 rows x 98 columns:
| Method | Time | Speedup |
|---|---|---|
| xlsxturbo | 28.5s | 26.7x |
| PyExcelerate | 107s | 7.1x |
| pandas + xlsxwriter | 374s | 2.0x |
| pandas + openpyxl | 762s | 1.0x |
| polars.write_excel | 1039s | 0.7x |
Type Detection Examples
| CSV Value | Excel Type | Notes |
|---|---|---|
123 |
Number | Integer |
3.14159 |
Number | Float |
true / FALSE |
Boolean | Case insensitive |
2024-01-15 |
Date | Formatted as date |
2024-01-15T10:30:00 |
DateTime | ISO 8601 format |
NaN |
Empty | Graceful handling |
hello world |
Text | Default |
Supported date formats: YYYY-MM-DD, YYYY/MM/DD, DD-MM-YYYY, DD/MM/YYYY, MM-DD-YYYY, MM/DD/YYYY
Building from Source
Requires Rust toolchain and maturin:
# Install maturin
pip install maturin
# Development build
maturin develop
# Release build (optimized)
maturin develop --release
# Build wheel for distribution
maturin build --release
Benchmarking
Run the included benchmark script:
# Default: 100K rows x 50 columns
python benchmark.py
# Custom size
python benchmark.py --rows 500000 --cols 100
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xlsxturbo-0.1.0.tar.gz.
File metadata
- Download URL: xlsxturbo-0.1.0.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44d2e5bd16f78a02ca1bdc43624c32c3d813bc0f837d1e414364865b2638b4dc
|
|
| MD5 |
a24e12c217b610be260b646b0d921996
|
|
| BLAKE2b-256 |
e163afdebe44d2576d1dc5d5eb28aaa84e223d549ce6804c5cc763654ca89223
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0.tar.gz:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0.tar.gz -
Subject digest:
44d2e5bd16f78a02ca1bdc43624c32c3d813bc0f837d1e414364865b2638b4dc - Sigstore transparency entry: 740742946
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 752.9 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca256dc9a22d238200f993efc3066e3f21308b4cbdb273f4451ae9b2c553002e
|
|
| MD5 |
d2e639b53d1fcbd79ac8e17be36647b8
|
|
| BLAKE2b-256 |
584b028f1cf2265dd64effaf3042ce80092af611258f2acd3a8d76b68f361e9f
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
ca256dc9a22d238200f993efc3066e3f21308b4cbdb273f4451ae9b2c553002e - Sigstore transparency entry: 740742988
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 753.4 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f644016735872b660650db9d72a671e1302a898f0183035a03344cb7c6b805e3
|
|
| MD5 |
0cc1da7bf8fe4445d0d2454d5e735a2b
|
|
| BLAKE2b-256 |
23ef4685b4527521b2b5b9df786cb73a6305601aa5751249e85bc9d93d7b070b
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
f644016735872b660650db9d72a671e1302a898f0183035a03344cb7c6b805e3 - Sigstore transparency entry: 740742978
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 747.2 kB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f09ed7018675f4a73e751cbbd4c7b3e810fd3d0ef3deac17e5800a89a96f1444
|
|
| MD5 |
625feb4618b4e86a78efa8a8bc9240eb
|
|
| BLAKE2b-256 |
faf67c61fa9987c6c7f17305de1915441a1234a00356c6a55de96033b55b3794
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl -
Subject digest:
f09ed7018675f4a73e751cbbd4c7b3e810fd3d0ef3deac17e5800a89a96f1444 - Sigstore transparency entry: 740742953
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 802.9 kB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeb447d8555317744960d4cd03c94580ebdc463fb8e11d5c0252f8385e547518
|
|
| MD5 |
e7949a6b91566d8def2cacf87dd6ce65
|
|
| BLAKE2b-256 |
2373de11dcfc78e4c64bf0e21fc464c2e514a0c6b858f769a71a6e82efde2b80
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
aeb447d8555317744960d4cd03c94580ebdc463fb8e11d5c0252f8385e547518 - Sigstore transparency entry: 740742996
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 753.2 kB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bfa1369941ad2d0a785f6ce2737aaee94dd3c999f69e1bc247bf1fb57569a0c
|
|
| MD5 |
0fab5b5743c75f6638db100a25517fcd
|
|
| BLAKE2b-256 |
5703de972884ad48a2a0ca89652f89a11ce1da77b9364ecb1d8e34585cf4f9c8
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
6bfa1369941ad2d0a785f6ce2737aaee94dd3c999f69e1bc247bf1fb57569a0c - Sigstore transparency entry: 740742987
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 728.8 kB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8a958da080b54987ab601721171b42aa2d918c252a1bfde664b7370e26ed4ec
|
|
| MD5 |
4bce0a1a39f7d1decb22d17b310b9bdd
|
|
| BLAKE2b-256 |
717bd2e70278da791f3a9bd2c18b6fe22a8c7d95fa50e301aea6d742b6d88e25
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl -
Subject digest:
f8a958da080b54987ab601721171b42aa2d918c252a1bfde664b7370e26ed4ec - Sigstore transparency entry: 740742963
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type:
File details
Details for the file xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 773.9 kB
- Tags: CPython 3.8+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96a1ff26c6972f84b0b7e5a3320cb8441513aff0ec3c174d856ee0fe929b07fa
|
|
| MD5 |
f291d34b5e6c4203831f6208f3638975
|
|
| BLAKE2b-256 |
7944e32424fcb2b310f9ef90568568aee8a3f42b10eac82c3e6f9334324996bd
|
Provenance
The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on tstone-1/xlsxturbo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl -
Subject digest:
96a1ff26c6972f84b0b7e5a3320cb8441513aff0ec3c174d856ee0fe929b07fa - Sigstore transparency entry: 740742973
- Sigstore integration time:
-
Permalink:
tstone-1/xlsxturbo@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tstone-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a512e66e84ad5358b4cfe3312b1d47f56a8fabeb -
Trigger Event:
push
-
Statement type: