使用pyExcelerator在Django中生成动态Excel文件,确保临时文件名唯一
我想在Django中根据请求生成一个动态的Excel文件。pyExcelerator这个库可以做到这一点,但我还没找到一种方法,可以在不生成服务器端临时Excel文件的情况下使用Excel文件的内容。我必须先生成一个临时文件,读取它的内容,然后再删除它。
问题是,pyExcelerator提取Excel文件内容的唯一方法是先保存文件,像这样:
workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")
然后再读取这个临时文件的内容。我不能使用标准库中的“tempfile”,因为它只接受文件名,而不是真正的文件。我该如何确保文件名是唯一的,并且在使用完后能够删除这个文件呢?
2 个回答
3
为什么不能使用 tempfile
模块呢?
那这样怎么样:
import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)
11
pyExcelerator这个库已经不再维护了,但有一个叫做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