2010-04-14 9 views
5

Ho una tabella HTML che mi piacerebbe poter esportare in un file Excel. Ho già un'opzione per esportare la tabella in un file IQY, ma preferirei qualcosa che non permettesse all'utente di aggiornare i dati tramite Excel. Voglio solo una funzione che cattura un'istantanea del tavolo nel momento in cui l'utente fa clic sul link/pulsante.Django/Python: salva una tabella HTML in Excel

Preferirei che la funzione fosse un collegamento/pulsante nella pagina HTML che consente all'utente di salvare i risultati della query visualizzati nella tabella. Sarebbe anche bello se la formattazione da HTML/CSS potesse essere mantenuta. C'è un modo per farlo? O qualcosa che posso modificare con l'IQY?

Posso provare a fornire maggiori dettagli se necessario. Grazie in anticipo.

risposta

7

È possibile utilizzare l'eccellente modulo xlwt. È molto facile da usare e crea file in formato xls (Excel 2003).

Ecco un (non testato!) Esempio di utilizzo per una vista 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

Utilizzare CSV. C'è un modulo in Python ("csv") per generarlo, ed excel può leggerlo in modo nativo.

+0

Da un punto di vista dell'interfaccia utente, come dovrei presentare il file CSV all'utente? L'utente guarderebbe già la pagina, quindi farebbero clic su un collegamento che poi tornerà a una funzione di visualizzazione e genererà il file CSV, quindi ...? – kafuchau

+0

Inoltre, un CSV non manterrebbe alcuna formattazione che la mia tabella HTML ha già, giusto? – kafuchau

+0

Giusto. Con CSV i risultati non sono così belli; non è solo una questione di stili, ma anche la larghezza della colonna è solo quella standard. Poiché esistono modi per produrre file Excel nativi, non è consigliabile utilizzare CSV. –

0

supporto Excel apertura di un file HTML che contiene una tabella come un foglio di calcolo (anche con la formattazione CSS).

Fondamentalmente devi servire quel contenuto HTML da una vista di Django, con il tipo di contenuto application/ms-excel come ha detto Roberto.

Oppure, se ti senti avventuroso, puoi utilizzare qualcosa come Downloadify per preparare il file da scaricare sul lato client.

Problemi correlati