使用pyExcelerator与Django生成dynamic的Excel文件。 确保唯一的临时文件名

我想要从Django请求生成一个dynamic的Excel文件。 库pyExcelerator这样做,但我还没有find任何方式来使用Excel文件的内容,而不生成服务器端临时Excel文件,阅读它,使用其内容并删除它。

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

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

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

pyExcelerator是没有维护的,但它有一个fork, xlwt ,它被维护并有更多的function,包括允许你保存到任何类似文件的对象。 这包括直接保存到一个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 

为什么你不能使用tempfile模块?

怎么样:

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