Utilizzare pyExcelerator per generare dinamica dei file Excel con Django. Assicurarsi che il nome del file temporaneo unico
-
19-09-2019 - |
Domanda
mi piacerebbe per generare un file di Excel dinamica su richiesta da Django. Il pyExcelerator biblioteca fa questo, ma non ho trovato un modo per utilizzare il contenuto del file di Excel senza generare un file di Excel temporanea sul lato server, la lettura, con il suo contenuto ed eliminarlo.
Il problema è che pyExcelerator unico modo per estrarre il contenuto del file di Excel è il risparmio tramite:
workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")
E poi leggere il contenuto del file temporanei. Non posso usare la libreria "tempfile" standard perché non accetta un file, solo un nome di file. Come posso assicurare che il nome del file è unico e che il file viene eliminato una volta che è stato utilizzato?
Soluzione
pyExcelerator è più mantenuto, ma ha una forchetta, xlwt , che viene mantenuta e ha più caratteristiche, tra cui consentendo di salvare a qualsiasi oggetto simile a file. Questo include il salvataggio direttamente a un HttpResponse
Django:
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
Altri suggerimenti
Perché non si può utilizzare il modulo tempfile
?
Come su:
import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)