Namedtuples in XLSX konvertieren in Python
English
Deutsch
Dieses Python-Snippet ermöglicht es dir, ein Iterable von namedtuple-Instanzen in eine XLSX-Datei zu konvertieren, indem xlsxwriter verwendet wird.
Der Header wird automatisch aus dem ersten Element des Iterables bestimmt. Wenn das Iterable leer ist, ist auch die resultierende XLSX-Datei leer.
namedtuples_to_xlsx.py
import xlsxwriter
import itertools
from collections import namedtuple
def xlsx_write_rows(filename, rows):
"""
Schreibt XLSX-Zeilen aus einem Iterable von Zeilen.
Jede Zeile muss ein Iterable von schreibbaren Werten sein.
Gibt die Anzahl der geschriebenen Zeilen zurück
"""
workbook = xlsxwriter.Workbook(filename)
worksheet = workbook.add_worksheet()
# Werte schreiben
nrows = 0
for i, row in enumerate(rows):
for j, val in enumerate(row):
worksheet.write(i, j, val)
nrows += 1
# Aufräumen
workbook.close()
return nrows
def namedtuples_to_xlsx(filename, values):
"""
Konvertiert eine Liste oder einen Generator von namedtuples in eine XLSX-Datei.
Gibt die Anzahl der geschriebenen Zeilen zurück.
"""
try:
# Sicherstellen, dass es ein Generator ist (next() nicht auf Listen erlaubt)
values = (v for v in values)
# Erste Zeile verwenden, um Header zu generieren
peek = next(values)
header = list(peek.__class__._fields)
return xlsx_write_rows(filename, itertools.chain([header], [peek], values))
except StopIteration: # Leerer Generator
# Leere XLSX schreiben
return xlsx_write_rows(filename, [])Verwendungsbeispiel:
namedtuples_to_xlsx_usage.py
MyType = namedtuple("MyType", ["ID", "Name", "Value"])
namedtuples_to_xlsx("test.xlsx", [
MyType(1, "a", "b"),
MyType(2, "c", "d"),
MyType(3, "e", "f"),
])Dieses Beispiel generiert diese Tabelle:
xlsx_output.txt
ID Name Value
1 a b
2 c d
3 e fCheck out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow