Ich schreibe eine Webanwendung, die manchmal Dutzende von Zeilen (oder sogar mehr) in einer Excel-Datei ausgeben kann. openpyxl wurde für die Excel-Ausgabevorbereitung ausgewählt, aber ich bin mir nicht sicher, ob ich die Daten aus der Datenbank lesen und zur gleichen Zeit ausgeben könnte. Gibt es eine Möglichkeit, das zu tun? Hier ist ein Beispiel dessen, was ich in CSV bedeuten:Streamen Sie eine riesige Excel-Datei und erstellen Sie sie im laufenden Betrieb?
def csv_view(request, iterator, keys):
"""A view that streams a large CSV file."""
class Echo(object):
"""An object that implements just the write method of the file-like
interface.
"""
def write(self, value):
"""Write the value by returning it,
instead of storing in a buffer."""
return value
def get_iter():
writer = csv.writer(Echo())
yield writer.writerow(keys)
for row in iterator:
yield writer.writerow(row)
response = StreamingHttpResponse(get_iter(), content_type="text/csv")
response['Content-Disposition'] = 'attachment; filename="output.csv"'
return response
Mit der Datenbank meinen Sie die CSV-Datei? – jmunsch
Mit Datenbank meine ich "jeden Iterator". Ich brauche im Grunde ein Äquivalent dieser "csv_view" -Funktion, die XLS im laufenden Betrieb anstelle von CSV generieren würde. @jmufsch – d33tah
Kann in der Lage sein, eine 'SpooledTemporaryFile' mit einer maximalen Größe von dem, was Excel bearbeiten kann und dann die Chunked Excel-Dateien zu streamen? Sieht so aus, als würde der 'write_only' Modus' NamedTemporaryFile' mit einer unbegrenzten Größe verwenden? Ich bin mir nicht sicher über den Anwendungsfall. – jmunsch