Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xlsxturbo-0.1.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (752.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (753.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl (747.2 kB view details)

Uploaded CPython 3.8+Windows x86-64

xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (802.9 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (753.2 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl (728.8 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl (773.9 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

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

Hashes for xlsxturbo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 44d2e5bd16f78a02ca1bdc43624c32c3d813bc0f837d1e414364865b2638b4dc
MD5 a24e12c217b610be260b646b0d921996
BLAKE2b-256 e163afdebe44d2576d1dc5d5eb28aaa84e223d549ce6804c5cc763654ca89223

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsxturbo-0.1.0.tar.gz:

Publisher: release.yml on tstone-1/xlsxturbo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca256dc9a22d238200f993efc3066e3f21308b4cbdb273f4451ae9b2c553002e
MD5 d2e639b53d1fcbd79ac8e17be36647b8
BLAKE2b-256 584b028f1cf2265dd64effaf3042ce80092af611258f2acd3a8d76b68f361e9f

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f644016735872b660650db9d72a671e1302a898f0183035a03344cb7c6b805e3
MD5 0cc1da7bf8fe4445d0d2454d5e735a2b
BLAKE2b-256 23ef4685b4527521b2b5b9df786cb73a6305601aa5751249e85bc9d93d7b070b

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f09ed7018675f4a73e751cbbd4c7b3e810fd3d0ef3deac17e5800a89a96f1444
MD5 625feb4618b4e86a78efa8a8bc9240eb
BLAKE2b-256 faf67c61fa9987c6c7f17305de1915441a1234a00356c6a55de96033b55b3794

See more details on using hashes here.

Provenance

The following attestation bundles were made for xlsxturbo-0.1.0-cp38-abi3-win_amd64.whl:

Publisher: release.yml on tstone-1/xlsxturbo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aeb447d8555317744960d4cd03c94580ebdc463fb8e11d5c0252f8385e547518
MD5 e7949a6b91566d8def2cacf87dd6ce65
BLAKE2b-256 2373de11dcfc78e4c64bf0e21fc464c2e514a0c6b858f769a71a6e82efde2b80

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6bfa1369941ad2d0a785f6ce2737aaee94dd3c999f69e1bc247bf1fb57569a0c
MD5 0fab5b5743c75f6638db100a25517fcd
BLAKE2b-256 5703de972884ad48a2a0ca89652f89a11ce1da77b9364ecb1d8e34585cf4f9c8

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8a958da080b54987ab601721171b42aa2d918c252a1bfde664b7370e26ed4ec
MD5 4bce0a1a39f7d1decb22d17b310b9bdd
BLAKE2b-256 717bd2e70278da791f3a9bd2c18b6fe22a8c7d95fa50e301aea6d742b6d88e25

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for xlsxturbo-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 96a1ff26c6972f84b0b7e5a3320cb8441513aff0ec3c174d856ee0fe929b07fa
MD5 f291d34b5e6c4203831f6208f3638975
BLAKE2b-256 7944e32424fcb2b310f9ef90568568aee8a3f42b10eac82c3e6f9334324996bd

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page