3


3

pyExceleratorを使用して、Djangoで動的なExcelファイルを生成します。 一意の一時ファイル名を確認する

Djangoからのリクエストに応じて、動的なExcelファイルを生成したいと思います。 ライブラリpyExceleratorがこれを行いますが、サーバー側の一時Excelファイルを生成、読み取り、その内容を使用、削除せずにExcelファイルの内容を使用する方法は見つかりませんでした。

問題は、pyExceleratorがExcelファイルのコンテンツを抽出する唯一の方法は、次の方法で保存することです。

workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")

そして、一時ファイルの内容を読み取ります。 標準ライブラリ「tempfile」は、ファイルではなくファイル名だけを受け入れるため、使用できません。 ファイル名が一意であり、使用後にファイルが削除されるようにするにはどうすればよいですか?

2 Answer


11


pyExceleratorはメンテナンスされていませんが、フォーク(http://pypi.python.org/pypi/xlwt[xlwt])があり、これは維持され、任意のファイルのようなオブジェクトへの保存を含む、より多くの機能を備えています。 これには、Djangoの「HttpResponse」に直接保存することが含まれます。

from django.http import HttpResponse
import xlwt

def my_view(request):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename="foo.xls"'
    wb = xlwt.Workbook()
    wb.save(response)
    return response


3


なぜ `tempfile`モジュールを使用できないのですか?

どうですか?

import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)