<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linuxkurs-Blog (Einträge über Office-Dateien)</title><link>https://lannert.de/debloss/</link><description></description><atom:link href="https://lannert.de/debloss/categories/office-dateien.xml" rel="self" type="application/rss+xml"></atom:link><language>de</language><copyright>Contents © 2025 &lt;a href="mailto:lannert@hhu.de"&gt;Detlef Lannert&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Mon, 13 Oct 2025 17:57:28 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Spreadsheets ganz flott lesen</title><link>https://lannert.de/debloss/posts/spreadsheets-ganz-flott-lesen/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;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
&lt;a class="reference external" href="https://github.com/tafia/calamine"&gt;calamine&lt;/a&gt;, das – wen wundert's –
in Rust geschrieben ist. Für die Python-Programmierer gibt es einen Wrapper
als Paket &lt;a class="reference external" href="https://github.com/dimastbk/python-calamine"&gt;python-calamine&lt;/a&gt;.
Hier ein Beispiel für dessen Benutzung:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ uv run --with=python-calamine,ipython ipython
&amp;gt;&amp;gt;&amp;gt; from python_calamine import CalamineWorkbook
&amp;gt;&amp;gt;&amp;gt; wb = CalamineWorkbook.from_path("some_file.xlsx")
&amp;gt;&amp;gt;&amp;gt; wb.sheet_names
['First Sheet']
&amp;gt;&amp;gt;&amp;gt; ws = wb.get_sheet_by_index(0)
&amp;gt;&amp;gt;&amp;gt; ws.height, ws.width
(2302, 18)
&amp;gt;&amp;gt;&amp;gt; data = ws.to_python()
&amp;gt;&amp;gt;&amp;gt; len(data)
2302
&amp;gt;&amp;gt;&amp;gt; data[0]
['Spalte 1', 'Zweite Spalte', 'Noch eine Spalte', …]
&amp;gt;&amp;gt;&amp;gt; data[1]
['1200 ABC', 'xyz', 672000000, …]&lt;/pre&gt;
&lt;p&gt;(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:&lt;/p&gt;
&lt;pre class="literal-block"&gt;&amp;gt;&amp;gt;&amp;gt; from io import BytesIO
&amp;gt;&amp;gt;&amp;gt; b = BytesIO(open("some_file.xlsx", "b").read())
&amp;gt;&amp;gt;&amp;gt; wb = CalamineWorkbook.from_filelike(b)
&amp;gt;&amp;gt;&amp;gt; wb.sheet_names
['First Sheet']&lt;/pre&gt;</description><category>Office-Dateien</category><category>Programmieren</category><category>Python</category><category>Spreadsheets</category><guid>https://lannert.de/debloss/posts/spreadsheets-ganz-flott-lesen/</guid><pubDate>Mon, 13 Oct 2025 08:00:00 GMT</pubDate></item></channel></rss>