私は時々Excelファイルに何十万行も出力するWebアプリケーションを作成しています。 openpyxlがExcelの出力準備に選ばれましたが、データベースからデータを読み込んで同時に出力できるかどうかはわかりません。それを行う方法はありますか?ここで私はCSVで何を意味するかの例です:巨大なExcelファイルをストリームして、オンザフライで作成しますか?
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
データベースでは、CSVファイルを意味しますか? – jmunsch
データベースとは、「任意のイテレータ」を意味します。私は基本的に、CSVではなくその場でXLSを生成するこの 'csv_view'関数に相当するものが必要です。 @jmunsch – d33tah
「スプールされたファイル」をmaxelizeで作成して、Excelで処理できるものを作成し、次にチャンクされたExcelファイルをストリーミングできますか? 'write_only'モードは無制限のサイズで' NamedTemporaryFile'を使いますか?ユースケースについてはわかりません。 – jmunsch