2009-12-11 21 views
3

我想根據Django的請求生成一個動態的Excel文件。庫pyExcelerator這樣做,但我還沒有找到任何方式來使用Excel文件的內容,而不生成服務器端臨時Excel文件,閱讀它,使用它的內容並刪除它。使用pyExcelerator與Django生成動態Excel文件。確保唯一的臨時文件名

的問題是,pyExcelerator只提取Excel文件的內容,方法是通過將其保存:

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

然後讀取臨時文件內容。我不能使用標準庫「tempfile」,因爲它不接受文件,只是一個文件名。我怎樣才能確保文件名是唯一的,並且文件一旦被使用就被刪除了?

回答

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 
3

爲什麼你不能使用tempfile模塊?

如何:

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

+1。請記住在使用它之後刪除文件;根據罰款手冊:「調用者負責刪除文件時完成它。」 – ema 2009-12-11 09:24:25