Utilice pyExcelerator para generar archivo de Excel dinámica con Django. Garantizar nombre de archivo temporal único

StackOverflow https://stackoverflow.com/questions/1886744

Pregunta

Me gustaría generar un archivo de Excel dinámica a petición de Django. La biblioteca pyExcelerator hace esto, pero no he encontrado ninguna manera de utilizar el contenido del archivo de Excel sin generar un archivo de Excel temporal del lado del servidor, la lectura, el uso de su contenido y eliminarlo.

El problema es que pyExcelerator única manera de extraer el contenido del archivo de Excel que está salvando a través de:

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

Y a continuación, leer el contenido del archivo temporal. No puedo usar la biblioteca "archivo temporal" estándar porque no acepta un archivo, sólo un nombre de archivo. Cómo puedo estar seguro de que el nombre del archivo es única y que el archivo se elimina una vez que se ha utilizado?

¿Fue útil?

Solución

pyExcelerator es unmaintained, pero tiene un tenedor, xlwt , que se mantiene y tiene más características, incluyendo lo que permite guardar a cualquier objeto de tipo fichero. Esto incluye el ahorro directamente 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

Otros consejos

¿Por qué no se puede utilizar el módulo tempfile?

¿Qué hay de:

import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top