Python binding for Rust's library for reading excel and odf file - calamine
Project Links
Meta
Author: Dmitriy
Requires Python: >=3.10
Classifiers
Development Status
- 4 - Beta
Programming Language
- Rust
- Python :: 3.10
- Python :: 3.11
- Python :: 3.12
- Python :: 3.13
- Python :: 3.14
python-calamine
Python binding for beautiful Rust's library for reading excel and odf file - calamine.
Is used
Installation
Pypi:
pip install python-calamine
Conda:
conda install -c conda-forge python-calamine
Example
from python_calamine import CalamineWorkbook
workbook = CalamineWorkbook.from_path("file.xlsx")
workbook.sheet_names
# ["Sheet1", "Sheet2"]
workbook.get_sheet_by_name("Sheet1").to_python()
# [
# ["1", "2", "3", "4", "5", "6", "7"],
# ["1", "2", "3", "4", "5", "6", "7"],
# ["1", "2", "3", "4", "5", "6", "7"],
# ]
By default, calamine skips empty rows/cols before data. For suppress this behaviour, set skip_empty_area to False.
from python_calamine import CalamineWorkbook
workbook = CalamineWorkbook.from_path("file.xlsx").get_sheet_by_name("Sheet1").to_python(skip_empty_area=False)
# [
# [", ", ", ", ", ", "],
# ["1", "2", "3", "4", "5", "6", "7"],
# ["1", "2", "3", "4", "5", "6", "7"],
# ["1", "2", "3", "4", "5", "6", "7"],
# ]
Pandas 2.2 and above have built-in support of python-calamine.
Also, you can find additional examples in tests.
Development
You'll need rust installed.
# clone this repo or your fork
git clone git@github.com:dimastbk/python-calamine.git
cd python-calamine
# create a new virtual env
python3 -m venv env
source env/bin/activate
# install dev dependencies and install python-calamine
pip install --group dev -e . # required pip 25.1 and above
# lint code
pre-commit run --all-files
# test code
pytest
0.6.2
Feb 18, 2026
0.6.1
Nov 26, 2025
0.6.0
Nov 25, 2025
0.5.4
Oct 21, 2025
0.5.3
Sep 08, 2025
0.5.2
Sep 04, 2025
0.5.1
Sep 04, 2025
0.5.0
Sep 04, 2025
0.4.0
Jul 04, 2025
0.3.2
Apr 02, 2025
0.3.1
Nov 06, 2024
0.3.0
Nov 04, 2024
0.2.3
Jul 18, 2024
0.2.2
Jul 15, 2024
0.2.0
Feb 29, 2024
0.1.7
Dec 01, 2023
0.1.6
Sep 04, 2023
0.1.5
Sep 04, 2023
0.1.4
Jun 28, 2023
0.1.3
Jun 13, 2023
0.1.2
May 23, 2023
0.1.1
May 01, 2023
0.1.0
Mar 26, 2023
0.0.8
Feb 06, 2023
0.0.7
Jan 27, 2023
0.0.6
Jan 09, 2023
0.0.5
Nov 09, 2022
0.0.4
Oct 26, 2022
0.0.3
Oct 06, 2021
0.0.2
Sep 02, 2021
Wheel compatibility matrix
Files in release
python_calamine-0.6.2-cp310-cp310-macosx_10_12_x86_64.whl (859.3KiB)
python_calamine-0.6.2-cp310-cp310-macosx_11_0_arm64.whl (838.6KiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.7KiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (884.6KiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (947.1KiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (915.4KiB)
python_calamine-0.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (955.5KiB)
python_calamine-0.6.2-cp310-cp310-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.6.2-cp310-cp310-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp310-cp310-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp310-cp310-win32.whl (682.9KiB)
python_calamine-0.6.2-cp310-cp310-win_amd64.whl (733.8KiB)
python_calamine-0.6.2-cp311-cp311-macosx_10_12_x86_64.whl (859.2KiB)
python_calamine-0.6.2-cp311-cp311-macosx_11_0_arm64.whl (838.5KiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.9KiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (884.4KiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (947.0KiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (915.4KiB)
python_calamine-0.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (956.1KiB)
python_calamine-0.6.2-cp311-cp311-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.6.2-cp311-cp311-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp311-cp311-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp311-cp311-win32.whl (682.9KiB)
python_calamine-0.6.2-cp311-cp311-win_amd64.whl (734.3KiB)
python_calamine-0.6.2-cp311-cp311-win_arm64.whl (702.4KiB)
python_calamine-0.6.2-cp312-cp312-macosx_10_12_x86_64.whl (858.9KiB)
python_calamine-0.6.2-cp312-cp312-macosx_11_0_arm64.whl (838.5KiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (903.6KiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (884.1KiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (942.7KiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (913.2KiB)
python_calamine-0.6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (951.2KiB)
python_calamine-0.6.2-cp312-cp312-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.6.2-cp312-cp312-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp312-cp312-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp312-cp312-win32.whl (676.2KiB)
python_calamine-0.6.2-cp312-cp312-win_amd64.whl (731.4KiB)
python_calamine-0.6.2-cp312-cp312-win_arm64.whl (702.1KiB)
python_calamine-0.6.2-cp313-cp313-macosx_10_12_x86_64.whl (858.3KiB)
python_calamine-0.6.2-cp313-cp313-macosx_11_0_arm64.whl (838.2KiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (903.1KiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (882.5KiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (942.1KiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (913.1KiB)
python_calamine-0.6.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (950.7KiB)
python_calamine-0.6.2-cp313-cp313-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.6.2-cp313-cp313-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp313-cp313-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp313-cp313-win32.whl (675.6KiB)
python_calamine-0.6.2-cp313-cp313-win_amd64.whl (730.9KiB)
python_calamine-0.6.2-cp313-cp313-win_arm64.whl (701.7KiB)
python_calamine-0.6.2-cp313-cp313t-macosx_10_12_x86_64.whl (857.4KiB)
python_calamine-0.6.2-cp313-cp313t-macosx_11_0_arm64.whl (837.2KiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (902.1KiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (881.4KiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (940.4KiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (912.3KiB)
python_calamine-0.6.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl (948.4KiB)
python_calamine-0.6.2-cp313-cp313t-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.6.2-cp313-cp313t-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp313-cp313t-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp313-cp313t-win_amd64.whl (731.7KiB)
python_calamine-0.6.2-cp313-cp313t-win_arm64.whl (699.3KiB)
python_calamine-0.6.2-cp314-cp314-macosx_10_12_x86_64.whl (858.2KiB)
python_calamine-0.6.2-cp314-cp314-macosx_11_0_arm64.whl (837.7KiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (904.1KiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (881.7KiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl (941.2KiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (911.6KiB)
python_calamine-0.6.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (950.2KiB)
python_calamine-0.6.2-cp314-cp314-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.6.2-cp314-cp314-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp314-cp314-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp314-cp314-win32.whl (675.3KiB)
python_calamine-0.6.2-cp314-cp314-win_amd64.whl (732.0KiB)
python_calamine-0.6.2-cp314-cp314-win_arm64.whl (702.0KiB)
python_calamine-0.6.2-cp314-cp314t-macosx_10_12_x86_64.whl (856.3KiB)
python_calamine-0.6.2-cp314-cp314t-macosx_11_0_arm64.whl (837.3KiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (901.0KiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (880.4KiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (942.0KiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (912.7KiB)
python_calamine-0.6.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (948.9KiB)
python_calamine-0.6.2-cp314-cp314t-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.6.2-cp314-cp314t-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-cp314-cp314t-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2-cp314-cp314t-win_amd64.whl (730.9KiB)
python_calamine-0.6.2-cp314-cp314t-win_arm64.whl (697.6KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (862.5KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl (842.1KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (909.2KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (916.0KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (957.1KiB)
python_calamine-0.6.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.6.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.6.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.6.2.tar.gz (134.8KiB)
No dependencies