Speichern openpyxl-Datei mittels text-und filestream
Baue ich OpenPyXL in einer Anwendung, die erwartet einen string mit dem Inhalt der excel-Datei, für Sie zu schreiben über die Datei-stream.
Aus meiner Untersuchung, in der OpenPyXL source-code, es sieht nicht wie es unterstützt diese Art der Ausgabe. Hat jemand irgendwelche Erfahrungen mit der änderung der openpyxl um dies zu unterstützen?
Oder Allgemeine Ratschläge/workarounds?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
jcollado die Antwort ist tatsächlich gültig, aber es gibt auch eine Funktion (leider nicht dokumentiert) noch als "save_virtual_workbook" in openpyxl.Schriftsteller.excel, das wird nehmen Sie Ihre Arbeitsmappe und Rückgabe der Arbeitsmappe als string:
Was du suchst ist der string, der zurückgegeben save_virtual_workbook()
io.BytesIO(save_virtual_workbook(wb))
Was ist mit dem
StringIO
- Objekt zu speichern, wird der Inhalt der Datei:Die Zeichenfolge, die Sie suchen, ist, was gedruckt in der letzten Zeile dieses Beispiels.
io.BytesIO
filename
Python ' s ZipFile Bibliothek akzeptiert entweder Dateinamen oder ein file-like-Objekt (wieBytesIO
). Leider habe ich nicht herausfinden können, seit welcher version dies der Fall gewesen ist.In openpyxl 2.6 aufrufen der
save_virtual_workbook
Methode Probleme die folgende Warnung:Irgendwann
save_virtual_workbook
entfernt von openpyxl.In Python 3 eine typische Nutzung zu speichern openpyxl Arbeitsmappe zu einem filestream wird:
Nach einem Blick auf die Umsetzung der Arbeitsmappe
save
Methode, die 'Dateiname' ist direkt zu ZipFile akzeptiert den Pfad oder die Datei-wie-Objekt, so gibt es keine Notwendigkeit für eine NamedTemporaryFile und einfach mit der in-memory BytesIO: