(私はopenpyxl
に新たなんです)。 openpyxlにはこれを行う方法がありますが、それはあまり詳しくは書かれていません。長い間、私はsomething like thisをxlwtを使って作成しましたが、最近はopenpyxlを使用してFalconフレームワークで同様のものを構築しました。一緒にこれら二つを置く
、あなたのコードは、の線に沿って何かになります:あなたは大きなファイルを生成している場合
from django.http import HttpResponse
from openpyxl import Workbook
from openpyxl.writer.excel import save_virtual_workbook
workbook = Workbook()
worksheet = workbook.active
# ... worksheet.append(...) all of your data ...
response = HttpResponse(content=save_virtual_workbook(workbook), mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=myexport.xlsx'
return response
、私はStreamingHttpResponseを使用してに探してお勧めだろうが、私は、これは、少なくともあなたを得ると確信してい行く。
これは、私が働いていた2つのプロジェクトのマージに基づいてちょうどオフカフの抜粋ですので、それは正確に正しくない可能性があります。それはかなり近いはずです。ファルコンでの出力は次のように見えた:
response.content_type = 'application/octet-stream;'
response.set_header('Content-Disposition', 'attachment; filename=myexport.xlsx')
response.body = save_virtual_workbook(workbook)
UPDATE:私はopenpyxlを使用して、私の古いdjango-excel-response
ライブラリの完全な書き換えを行ったように これは、今非常に簡単です! https://github.com/tarkatronic/django-excel-response
pip install django-excel-response
と一緒にインストールして、DjangoのHttpResponse
の代わりに使用することができます。最小限のマニュアルが含まれており、改善/提案は大歓迎です。 :)