2010-04-14 18 views
5

Tengo una tabla HTML que me gustaría poder exportar a un archivo de Excel. Ya tengo una opción para exportar la tabla a un archivo IQY, pero prefiero algo que no permita al usuario actualizar los datos a través de Excel. Solo quiero una característica que tome una instantánea de la tabla en el momento en que el usuario haga clic en el enlace/botón.Django/Python: guarde una tabla HTML en Excel

Preferiría que la función fuera un enlace/botón en la página HTML que permite al usuario guardar los resultados de la consulta que se muestran en la tabla. También sería bueno si el formato del HTML/CSS pudiera conservarse. ¿Hay alguna forma de hacer esto? O algo que puedo modificar con el IQY?

Puedo intentar proporcionar más detalles si es necesario. Gracias por adelantado.

Respuesta

7

Puede utilizar el excelente módulo xlwt. Es muy fácil de usar y crea archivos en formato xls (Excel 2003).

Aquí es un ejemplo (no probado!) De uso para una vista de 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

Usar CSV. Hay un módulo en Python ("csv") para generarlo, y excel puede leerlo de forma nativa.

+0

Desde el punto de vista de la interfaz de usuario, ¿cómo presentaría el archivo CSV al usuario? El usuario ya estaría mirando la página, por lo que haría clic en un enlace que luego regresa a alguna función de vista y genera el archivo CSV, y luego ...? – kafuchau

+0

Además, un CSV no mantendría ningún formato que mi tabla HTML ya tenga, ¿verdad? – kafuchau

+0

Derecha. Con CSV los resultados no son tan buenos; no solo se trata de estilos, sino que incluso el ancho de columna es el estándar. Como hay formas de producir archivos nativos de Excel, no recomendaría usar CSV. –

0

apoyo Excel abre un archivo HTML que contiene una tabla como una hoja de cálculo (incluso con formato CSS).

Básicamente tiene que servir ese contenido HTML desde una vista django, con el tipo de contenido application/ms-excel como dijo Roberto.

O si te sientes aventurero, puedes usar algo como Downloadify para preparar el archivo que se descargará en el lado del cliente.

Cuestiones relacionadas