Gibt das Arbeitsmappenobjekt openpxl als HttpResponse in django zurück. Ist es möglich?

8

Ich muss den Besuchern eine Excel-formatierte Daten aus der Datenbank von django zur Verfügung stellen.

Ich kann nur an diese Schritte denken:

  1. Extrahieren Sie Daten aus der Datenbank.
  2. Umschließen Sie es mit Workbook object von openpyxl .
  3. Speichern Sie es vorübergehend.
  4. Lies es noch einmal als 'rb'.
  5. kehren Sie mit Mime-Typ von Excel zurück .
  6. Löschen Sie die Excel-Datei auf der Festplatte. (Es ist jetzt nutzlos, oder?)

Das sollte es tun. Aber ich denke, es gibt noch einen besseren Weg, dies zu tun. ich meine Vielleicht gibt es eine Möglichkeit, openpyxl object als HttpResponse direkt zurückzugeben ohne Zwischenspeichermedium.

Also, meine Frage hier ist: Ist es möglich, openpyxl 's Worbook zurückzugeben? Objekt? (Ich bin neu mit openpyxl )

    
Mas Bagol 19.10.2015, 14:40
quelle

1 Antwort

10

Sie müssen die Daten nicht irgendwo auf der Festplatte speichern. openpyxl hat eine Möglichkeit dies zu tun, obwohl es nicht sehr gut dokumentiert ist. Vor langer Zeit habe ich etwas Ähnliches mit xlwt erstellt, aber ich habe kürzlich auch etwas Ähnliches in Falcon Framework, mit openpyxl.

Wenn Sie diese beiden zusammenfügen, würde Ihr Code etwa wie folgt aussehen:

%Vor%

Wenn Sie größere Dateien erzeugen, würde ich empfehlen, StreamingHttpResponse zu verwenden, aber ich glaube, das wird Sie zumindest weiterbringen.

Dies ist nur ein spontaner Ausschnitt, der auf einer Zusammenführung der beiden Projekte basiert, an denen ich gearbeitet habe, also ist es vielleicht nicht genau richtig. Es sollte aber ziemlich nah sein. Die Ausgabe in Falcon sah so aus:

%Vor%

UPDATE: Das ist jetzt viel einfacher, da ich meine alte django-excel-response -Bibliothek mit openpxl komplett neu geschrieben habe! Es kann jetzt hier gefunden werden: Ссылка

Du kannst es mit pip install django-excel-response installieren und es als Alternative zu Djangos HttpResponse verwenden! Es ist nur eine minimale Dokumentation vorhanden und Verbesserungen / Vorschläge sind willkommen. :)

    
Joey Wilhelm 19.10.2015, 16:20
quelle

Tags und Links