Registry / data / fastexcel

fastexcel

JSON →
library0.21.0pypypi✓ verified 29d ago

Fastexcel is a high-performance Python library for reading Excel files (.xlsx), implemented in Rust. It focuses on speed and memory efficiency, making it suitable for large datasets. The library is actively maintained with frequent minor releases, typically on a monthly cadence.

pip install fastexcel
INSTALL
IMPORT
SIG · FASTEXCEL
F
fastexcel
datapythonv0.21.0
Install
1.7s avg
Import
46ms
Disk
30MB
Pass rate
9/ 10
Env Coverage9 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v0.21.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✓ —
✓ 1.6s
py 3.11
✓ —
✓ 1.7s
py 3.12
✓ —
✓ 1.6s
py 3.13
✓ —
✓ 1.5s
py 3.9
✕ build_error
✓ 2s
30MB installed
● package 30MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

ExcelReader
✓ from fastexcel import ExcelReader
✗ from fastexcel import Reader

This quickstart demonstrates how to read an Excel file using `fastexcel`. It first creates a dummy Excel file with pandas, then initializes `fastexcel.Reader` to load data into an Apache Arrow Table, showing how to read by sheet index and sheet name.

import pandas as pd from fastexcel import Reader import os # Create a dummy Excel file for demonstration file_path = "dummy_data.xlsx" data = {'ColumnA': [1, 2, 3], 'ColumnB': ['X', 'Y', 'Z']} df = pd.DataFrame(data) df.to_excel(file_path, index=False) try: # Initialize the reader with the Excel file path reader = Reader(file_path) # Load the first sheet into an Apache Arrow Table table = reader.load_table(sheet_name=0) print("\nData from first sheet (Arrow Table):") print(table) # To access sheet names, first call load_ws() reader.load_ws() # Loads all worksheet metadata if reader.ws_names: first_sheet_name = reader.ws_names[0] table_by_name = reader.load_table(sheet_name=first_sheet_name) print(f"\nData from sheet '{first_sheet_name}' by name:") print(table_by_name) except Exception as e: print(f"An error occurred: {e}") finally: # Clean up the dummy file if os.path.exists(file_path): os.remove(file_path) print(f"\nCleaned up {file_path}")
Debug
Known issues
breakingFastexcel has dropped support for older Python versions. v0.17.1 dropped Python 3.9, and v0.13.0 dropped Python 3.8. The current minimum required Python version is 3.10.
fix
Ensure your Python environment is version 3.10 or higher before installing or upgrading fastexcel.
affects: <=0.16.x for Python 3.9; <=0.12.x for Python 3.8
gotchaSetting `schema_sample_rows=0` when initializing `Reader` is no longer allowed and will raise an error.
fix
Use a positive integer for `schema_sample_rows` to infer the schema from actual rows, or omit it entirely to use the default behavior (which is usually sufficient).
affects: >=0.12.1
gotchaPrior to v0.17.1, cells containing Excel error values like `#DIV/0!` might not have been consistently treated as null during type inference.
fix
Upgrade to `fastexcel` v0.17.1 or later to ensure that `#DIV/0!` cells are correctly interpreted as null values.
affects: <0.17.1
gotchaIn versions prior to v0.19.0, using `use_columns` with `load_table` when `column_names` was *not* specified could lead to incorrect behavior or errors.
fix
Upgrade to `fastexcel` v0.19.0 or later. If upgrading is not possible, ensure that `column_names` is also explicitly provided when using `use_columns` in older versions.
affects: <0.19.0
Upgrade
Version history
0.21.0latest on PyPI · released Aug 19, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
39 hits · last 30 days
node
38
Resources
fastexcel — pip install fastexcel · libregistry