Spreadsheets ganz flott lesen

Häufig bekommt man Daten als Spreadsheets geliefert, möchte sie aber nicht in LibreOffice, sondern per eigenem Programm weiterverarbeiten. Es gibt zahlreiche Tools für fast ebenso zahlreiche Programmiersprachen, die diese Tabellenformate einlesen können. Ein besonders schnell zu Werke gehendes solches Tool ist calamine, das – wen wundert's – in Rust geschrieben ist. Für die Python-Programmierer gibt es einen Wrapper als Paket python-calamine. Hier ein Beispiel für dessen Benutzung:

$ uv run --with=python-calamine,ipython ipython
>>> from python_calamine import CalamineWorkbook
>>> wb = CalamineWorkbook.from_path("some_file.xlsx")
>>> wb.sheet_names
['First Sheet']
>>> ws = wb.get_sheet_by_index(0)
>>> ws.height, ws.width
(2302, 18)
>>> data = ws.to_python()
>>> len(data)
2302
>>> data[0]
['Spalte 1', 'Zweite Spalte', 'Noch eine Spalte', …]
>>> data[1]
['1200 ABC', 'xyz', 672000000, …]

(Die Ausgaben sind hier etwas verkürzt.) Das Einlesen des Spreadsheets und Umwandeln in Python-Daten geht in Nullkommanichts vonstatten, und es können außer XLSX- auch XLS- und ODS-Dateien gleichermaßen gelesen werden. Auch als BytesIO-Objekt können die Daten bereitgestellt werden:

>>> from io import BytesIO
>>> b = BytesIO(open("some_file.xlsx", "b").read())
>>> wb = CalamineWorkbook.from_filelike(b)
>>> wb.sheet_names
['First Sheet']