使用pyExcelerator使用Django生成动态Excel文件。确保唯一临时文件名

时间:2009-12-11 09:03:33

标签: python django excel temporary-files pyexcelerator

我想根据Django的请求生成动态Excel文件。库pyExcelerator执行此操作,但我没有找到任何方法来使用Excel文件的内容而不生成服务器端临时Excel文件,读取它,使用其内容并删除它。

问题是pyExcelerator只提取Excel文件内容的方法是通过以下方式保存它:

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

然后读取临时文件内容。我不能使用标准库“tempfile”,因为它不接受文件,只接受文件名。如何确保文件名是唯一的,并且文件一旦被使用就会被删除?

2 个答案:

答案 0 :(得分:11)

pyExcelerator没有维护,但是它有一个fork 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

答案 1 :(得分:3)

为什么不能使用tempfile模块?

怎么样:

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