python-calamine 0.9.0


pip install python-calamine

  Latest version

Released: Oct 16, 2026

Project Links

Meta
Author: Dmitriy
Requires Python: >=3.11

Classifiers

Development Status
  • 4 - Beta

Programming Language
  • Rust
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14
  • Python :: 3.15

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.11 CPython 3.12 CPython 3.13 CPython 3.14 CPython 3.15 CPython (additional flags: t) 3.14 CPython (additional flags: t) 3.15 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
pyemscripten_2026_5_wasm32
win32
win_amd64
win_arm64

Files in release

python_calamine-0.9.0-cp311-cp311-macosx_10_12_x86_64.whl (852.4KiB)
python_calamine-0.9.0-cp311-cp311-macosx_11_0_arm64.whl (839.7KiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (913.4KiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (903.4KiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (974.5KiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (917.4KiB)
python_calamine-0.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (977.8KiB)
python_calamine-0.9.0-cp311-cp311-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp311-cp311-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp311-cp311-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp311-cp311-win32.whl (718.4KiB)
python_calamine-0.9.0-cp311-cp311-win_amd64.whl (767.7KiB)
python_calamine-0.9.0-cp311-cp311-win_arm64.whl (738.8KiB)
python_calamine-0.9.0-cp312-cp312-macosx_10_12_x86_64.whl (854.8KiB)
python_calamine-0.9.0-cp312-cp312-macosx_11_0_arm64.whl (835.6KiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.5KiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (900.7KiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (972.7KiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (914.2KiB)
python_calamine-0.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (971.9KiB)
python_calamine-0.9.0-cp312-cp312-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp312-cp312-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp312-cp312-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp312-cp312-win32.whl (716.3KiB)
python_calamine-0.9.0-cp312-cp312-win_amd64.whl (764.4KiB)
python_calamine-0.9.0-cp312-cp312-win_arm64.whl (734.8KiB)
python_calamine-0.9.0-cp313-cp313-macosx_10_12_x86_64.whl (853.9KiB)
python_calamine-0.9.0-cp313-cp313-macosx_11_0_arm64.whl (834.5KiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.5KiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (900.8KiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (972.1KiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (913.1KiB)
python_calamine-0.9.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (972.1KiB)
python_calamine-0.9.0-cp313-cp313-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp313-cp313-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp313-cp313-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp313-cp313-win32.whl (714.4KiB)
python_calamine-0.9.0-cp313-cp313-win_amd64.whl (764.0KiB)
python_calamine-0.9.0-cp313-cp313-win_arm64.whl (734.3KiB)
python_calamine-0.9.0-cp314-cp314-macosx_10_12_x86_64.whl (857.6KiB)
python_calamine-0.9.0-cp314-cp314-macosx_11_0_arm64.whl (837.3KiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (909.8KiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (902.5KiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl (974.6KiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (914.3KiB)
python_calamine-0.9.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (973.2KiB)
python_calamine-0.9.0-cp314-cp314-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl (503.9KiB)
python_calamine-0.9.0-cp314-cp314-win32.whl (715.0KiB)
python_calamine-0.9.0-cp314-cp314-win_amd64.whl (765.7KiB)
python_calamine-0.9.0-cp314-cp314-win_arm64.whl (749.1KiB)
python_calamine-0.9.0-cp314-cp314t-macosx_10_12_x86_64.whl (853.7KiB)
python_calamine-0.9.0-cp314-cp314t-macosx_11_0_arm64.whl (833.5KiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (905.7KiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (896.5KiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (970.7KiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (912.5KiB)
python_calamine-0.9.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (968.9KiB)
python_calamine-0.9.0-cp314-cp314t-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314t-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314t-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp314-cp314t-win_amd64.whl (763.0KiB)
python_calamine-0.9.0-cp314-cp314t-win_arm64.whl (747.0KiB)
python_calamine-0.9.0-cp315-cp315-macosx_10_12_x86_64.whl (857.2KiB)
python_calamine-0.9.0-cp315-cp315-macosx_11_0_arm64.whl (837.5KiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (910.7KiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (903.2KiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl (974.5KiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (914.8KiB)
python_calamine-0.9.0-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl (974.2KiB)
python_calamine-0.9.0-cp315-cp315-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315-pyemscripten_2026_5_wasm32.whl (504.9KiB)
python_calamine-0.9.0-cp315-cp315-win32.whl (715.6KiB)
python_calamine-0.9.0-cp315-cp315-win_amd64.whl (766.0KiB)
python_calamine-0.9.0-cp315-cp315t-macosx_10_12_x86_64.whl (854.0KiB)
python_calamine-0.9.0-cp315-cp315t-macosx_11_0_arm64.whl (833.4KiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (905.4KiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (897.2KiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0MiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl (971.5KiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (913.0KiB)
python_calamine-0.9.0-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl (969.3KiB)
python_calamine-0.9.0-cp315-cp315t-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315t-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315t-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0-cp315-cp315t-win_amd64.whl (763.2KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (855.3KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl (842.7KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (915.4KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (920.6KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (980.9KiB)
python_calamine-0.9.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl (1.1MiB)
python_calamine-0.9.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl (1.1MiB)
python_calamine-0.9.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (1.1MiB)
python_calamine-0.9.0.tar.gz (197.2KiB)
No dependencies