2010-08-08 8 views
1

J'utilise le module xlwt pour créer un fichier xls avec plusieurs feuilles et je souhaite afficher la disposition du contenu avec le fichier créé.Disposition du contenu

wbk = xlwt.Workbook(encoding='utf-8') 
sheet = workbook.add_sheet('sheet1') 

puis

response.headers['Content-Type'] = \ 
    gluon.contenttype.contenttype('.xls') 
response.headers['Content-disposition'] = 'attachment; filename=projects.xls'\ 

comment puis-je faire le contenu de WBK à l'intérieur projects.xls?

Merci à l'avance

Répondre

2

En regardant the docs, il semble que vous pourriez écrire un StringIO, puis imprimez cela.

import StringIO 
output = StringIO.StringIO() 
wbk.save(output) 

puis d'utiliser output.getvalue().

Je n'ai pas testé cela du tout.

+0

La théorie semble juste – Ben

+0

Je suppose que je devrais mentionner que, si vous utilisez CPython, je serais probablement utiliser cStringIO. Mais que vous en ayez besoin dépend de votre situation. –

0

Utilisez l'attribut response.body pour écrire le fichier Excel:

wbk.save(response.body) 
2

[dis] claimer: Je suis le responsable de xlwt.

Workbook.save(destination) ...

si destination est un objet avec un procédé write (par exemple obtenu par [c] StringIO.StringIO()):

xlwt écrit à cela, mais ne ferme pas. Ce que vous utilisez pour et comment vous disposez de l'objet sont à vous.

autre:

xlwt suppose que destination est une chaîne qui est interprété comme un chemin de fichier; xlwt tente d'ouvrir un fichier, d'y écrire et de le fermer.

0

dans Django vous suffit:

response = HttpResponse(my_data, mimetype='application/vnd.ms-excel') 
response['Content-Disposition'] = 'attachment; filename=foo.xls' 

wbk.save(response)