Utilisez pyExcelerator pour générer un fichier Excel dynamique avec Django. Assurez-nom de fichier unique

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

Question

Je voudrais générer un fichier Excel dynamique sur demande de Django. Le pyExcelerator de la bibliothèque fait cela, mais je n'ai pas trouvé un moyen d'utiliser le contenu du fichier Excel sans générer un fichier temporaire Excel côté serveur, la lecture, en utilisant son contenu et de le supprimer.

Le problème est que pyExcelerator seule façon d'extraire le contenu du fichier Excel est l'enregistrer via:

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

Et puis lire le contenu du fichier temporaire. Je ne peux pas utiliser la bibliothèque standard « tempfile » parce qu'il n'accepte pas un fichier, un nom de fichier. Comment puis-je vous assurer que le nom de fichier est unique et que le fichier est supprimé une fois qu'il a été utilisé?

Était-ce utile?

La solution

pyExcelerator est non maintenu, mais il a une fourche, xlwt , qui est maintenu et a plus caractéristiques, y compris vous permettant de sauvegarder à tout objet de type fichier. Cela comprend l'enregistrement directement à 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

Autres conseils

Pourquoi ne pouvez-vous pas utiliser le module tempfile?

Que diriez-vous:

import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top