python-calamine 0.8.2


pip install python-calamine

  Latest version

Released: Jul 13, 2026

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

PyPI - Version Conda Version Python Version from PEP 621 TOML

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

Wheel compatibility matrix

Platform CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14 CPython (additional flags: t) 3.14 PyPy 3.11 (pp73)
macosx_10_12_x86_64
macosx_11_0_arm64
manylinux1_i686
manylinux2014_aarch64
manylinux2014_armv7l
manylinux2014_ppc64le
manylinux2014_s390x
manylinux2014_x86_64
manylinux_2_17_aarch64
manylinux_2_17_armv7l
manylinux_2_17_ppc64le
manylinux_2_17_s390x
manylinux_2_17_x86_64
manylinux_2_5_i686
musllinux_1_1_aarch64
musllinux_1_1_armv7l
musllinux_1_1_x86_64
pyemscripten_2026_0_wasm32
win32
win_amd64
win_arm64

Files in release

python_calamine-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl (840.1KiB)
python_calamine-0.8.2-cp310-cp310-macosx_11_0_arm64.whl (833.2KiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (906.1KiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (899.4KiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (966.7KiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (902.3KiB)
python_calamine-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (980.4KiB)
python_calamine-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.8.2-cp310-cp310-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp310-cp310-win32.whl (721.2KiB)
python_calamine-0.8.2-cp310-cp310-win_amd64.whl (759.4KiB)
python_calamine-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl (840.2KiB)
python_calamine-0.8.2-cp311-cp311-macosx_11_0_arm64.whl (833.2KiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (905.9KiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (899.3KiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (966.8KiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (902.5KiB)
python_calamine-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (980.1KiB)
python_calamine-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.8.2-cp311-cp311-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp311-cp311-win32.whl (721.3KiB)
python_calamine-0.8.2-cp311-cp311-win_amd64.whl (759.6KiB)
python_calamine-0.8.2-cp311-cp311-win_arm64.whl (731.5KiB)
python_calamine-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl (843.9KiB)
python_calamine-0.8.2-cp312-cp312-macosx_11_0_arm64.whl (826.4KiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (901.8KiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (896.8KiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (963.3KiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (898.6KiB)
python_calamine-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (973.5KiB)
python_calamine-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.8.2-cp312-cp312-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp312-cp312-win32.whl (717.0KiB)
python_calamine-0.8.2-cp312-cp312-win_amd64.whl (756.4KiB)
python_calamine-0.8.2-cp312-cp312-win_arm64.whl (714.2KiB)
python_calamine-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl (842.9KiB)
python_calamine-0.8.2-cp313-cp313-macosx_11_0_arm64.whl (826.0KiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (901.8KiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (895.4KiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (963.4KiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (898.0KiB)
python_calamine-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (972.4KiB)
python_calamine-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.8.2-cp313-cp313-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp313-cp313-win32.whl (716.5KiB)
python_calamine-0.8.2-cp313-cp313-win_amd64.whl (756.2KiB)
python_calamine-0.8.2-cp313-cp313-win_arm64.whl (714.0KiB)
python_calamine-0.8.2-cp314-cp314-macosx_10_12_x86_64.whl (846.0KiB)
python_calamine-0.8.2-cp314-cp314-macosx_11_0_arm64.whl (827.8KiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (902.2KiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (896.0KiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl (964.6KiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (900.0KiB)
python_calamine-0.8.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (974.7KiB)
python_calamine-0.8.2-cp314-cp314-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.8.2-cp314-cp314-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp314-cp314-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl (503.3KiB)
python_calamine-0.8.2-cp314-cp314-win32.whl (705.8KiB)
python_calamine-0.8.2-cp314-cp314-win_amd64.whl (758.7KiB)
python_calamine-0.8.2-cp314-cp314-win_arm64.whl (729.0KiB)
python_calamine-0.8.2-cp314-cp314t-macosx_10_12_x86_64.whl (841.4KiB)
python_calamine-0.8.2-cp314-cp314t-macosx_11_0_arm64.whl (824.7KiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (899.2KiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (893.9KiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (962.1KiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (900.1KiB)
python_calamine-0.8.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (973.0KiB)
python_calamine-0.8.2-cp314-cp314t-musllinux_1_1_aarch64.whl (1.0MiB)
python_calamine-0.8.2-cp314-cp314t-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-cp314-cp314t-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2-cp314-cp314t-win_amd64.whl (756.8KiB)
python_calamine-0.8.2-cp314-cp314t-win_arm64.whl (726.7KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (845.9KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl (835.8KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.9KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (906.5KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (983.2KiB)
python_calamine-0.8.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.8.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.8.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.8.2.tar.gz (221.9KiB)
No dependencies