2010-04-14 7 views
5

J'ai un tableau HTML que j'aimerais exporter dans un fichier Excel. J'ai déjà une option pour exporter la table dans un fichier IQY, mais je préfère quelque chose qui n'a pas permis à l'utilisateur d'actualiser les données via Excel. Je veux juste une fonctionnalité qui prend un instantané de la table au moment où l'utilisateur clique sur le lien/bouton.Django/Python: Enregistrer un tableau HTML dans Excel

Je préférerais que la fonctionnalité soit un lien/bouton sur la page HTML qui permet à l'utilisateur d'enregistrer les résultats de la requête affichés dans la table. Ce serait bien aussi que le formatage du HTML/CSS puisse être conservé. Y a-t-il un moyen de le faire? Ou, quelque chose que je peux modifier avec l'IQY?

Je peux essayer de fournir plus de détails si nécessaire. Merci d'avance.

Répondre

7

Vous pouvez utiliser l'excellent module xlwt. Il est très facile à utiliser et crée des fichiers au format xls (Excel 2003).

Voici un exemple (non testé!) D'utilisation pour une vue Django:

from django.http import HttpResponse 
import xlwt 

def excel_view(request): 
    normal_style = xlwt.easyxf(""" 
    font: 
     name Verdana 
    """) 
    response = HttpResponse(mimetype='application/ms-excel') 
    wb = xlwt.Workbook() 
    ws0 = wb.add_sheet('Worksheet') 
    ws0.write(0, 0, "something", normal_style) 
    wb.save(response) 
    return response 
2

Utilisez CSV. Il y a un module en Python ("csv") pour le générer, et Excel peut le lire nativement.

+0

Du point de vue de l'interface utilisateur, comment présenter le fichier CSV à l'utilisateur? L'utilisateur regarde déjà la page, alors cliquer sur un lien qui retourne à une fonction d'affichage et génère le fichier CSV, puis ...? – kafuchau

+0

En outre, un fichier CSV ne conserverait pas la mise en forme que mon tableau HTML a déjà, n'est-ce pas? – kafuchau

+0

Droite. Avec CSV, les résultats ne sont pas si beaux. ce n'est pas seulement une question de style, mais même la largeur de la colonne est juste la norme. Comme il existe des moyens de produire des fichiers Excel natifs, je ne recommanderais pas d'utiliser CSV. –

0

support Excel ouverture d'un fichier HTML contenant une table comme une feuille de calcul (même avec la mise en forme CSS).

Vous devez essentiellement servir ce contenu HTML à partir d'une vue django, avec le type de contenu application/ms-excel comme l'a dit Roberto. Ou si vous vous sentez aventureux, vous pouvez utiliser quelque chose comme Downloadify pour préparer le fichier à télécharger sur le côté client.

Questions connexes