2010-07-08 201 views
9

Tengo una tabla HTML en mi página JSP, que quiero exportar a Excel con un clic de botón.
¿Cuál sería la mejor manera de solucionar esto?
(Por ejemplo, ¿cómo puedo hacer esto? Puede ser una función jQuery.)Exportar tabla HTML a excel - usando jQuery o Java

Cualquier código de ejemplo para la demostración. los propósitos deben ser geniales

Gracias,
Pritish.

Respuesta

0

Exportar a formato de archivo Excel con JQuery es imposible.

Puede probar con Java. Hay muchas bibliotecas para hacer eso.

+0

No, eso no es cierto. ¡Es absolutamente posible! –

0

Debería crear algo en el lado del servidor (como un servlet) para leer el html y crear el archivo de Excel y devolverlo al usuario.

Puede usar this library para ayudarlo a realizar la transformación.

4

exportación al lugar de CSV formato. También es compatible con Excel. Exportar a un formato XLS (X) completo utilizando, por ejemplo, Apache POI HSSF o JExcepAPI es lento y tiene poca memoria.

Exportar a CSV es relativamente simple. Puede encontrar un ejemplo de código completo en this answer.


En cuanto a la exportación a archivos usando JavaScript, esto no es posible sin la interacción de Flash o del lado del servidor. En Flash solo hay hasta la biblioteca Downloadify que puede exportar a archivos txt simples. Además, ExtJs parece tener un CSV export library, pero no puedo encontrar ninguna página de demostración factible.

1

Excel puede cargar archivos CSV (valores separados por comas), que son básicamente solo archivos con todo lo que iría en celdas separadas de Excel separadas por comas.

No sé lo suficiente acerca de cómo jQuery puede manejar la inserción de información en un archivo que descargaría, pero parece que se ha escrito una biblioteca jQuery que al menos transforma tablas html a formato CSV, y está aquí: http://www.kunalbabre.com/projects/table2CSV.php

Edición (29 de febrero, 2016): puede utilizar la aplicación table2csv anteriormente en relación con FileSaver.js (que es un contenedor para la especificación HTML5 W3C saveAs()).

El uso va a terminar buscando algo como:

var resultFromTable2CSV = $('#table-id').table2CSV({delivery:'value'}); 

var blob = new Blob([resultFromTable2CSV], {type: "text/csv;charset=utf-8"}); 

saveAs(blob, 'desiredFileName.csv'); 
+0

Esto no crea un archivo CSV para descargar. Esto solo muestra el contenido CSV generado en un área de texto en una ventana emergente que el usuario final debe copiar él mismo. Esto realmente no se ajusta a los requisitos, supongo;) – BalusC

+0

Respuesta actualizada para ser más útil 6 años después. – dmott

3

se puede analizar la tabla usando la biblioteca como http://jsoup.org/

después de obtener los datos, se puede almacenar en formato compatible con Excel (CSV), o el uso de java sobresalen biblioteca para que al igual PDI, o el uso de JDBC para escribir datos en la hoja de Excel, vea este ejemplo: Password Protected Excel File

1

También paso mucho tiempo para convertir html a excel después de la gran cantidad de R & D encontré la manera más fácil.

  1. crear un campo oculto y en el que pasar sus datos HTML a su servlet o controlador para, por ejemplo

    <form id="formexcel" action="" method="post" name="formexcel"> 
        <input type="hidden" name="exceldata" id="exceldata" value="" /> 
    </form> 
    
  2. en su botón de href llamada clic siguiente función y de pasar sus datos HTML utilizando en el documento. formexcel.exceldata.value y el servlet o controlador en document.formstyle.action

    function exportDivToExcel() { 
        document.formexcel.exceldata.value=$('#htmlbody').html(); 
        $("#lblReportForPrint").html("Procurement operation review report"); 
        document.formstyle.method='POST'; 
        document.formstyle.action='${pageContext.servletContext.contextPath}/generateexcel'; 
        document.formstyle.submit(); 
    } 
    
  3. en su controlador o servlet escritura siguiente código

    StringBuilder exceldata = new StringBuilder(); 
    exceldata.append(request.getParameter("exceldata")); 
    ServletOutputStream outputStream = response.getOutputStream(); 
    response.setContentType("application/vnd.ms-excel"); 
    response.setCharacterEncoding("UTF-8"); 
    response.setHeader("Content-Disposition", "attachment;filename=\"exportexcel.xls\""); 
    outputStream.write(exceldata.toString().getBytes()); 
    
0

He estado usando el plugin de jQuery table2excel. Funciona muy bien y no se necesita codificación en el servidor.

Usarlo es fácil. Basta con incluir jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 

Ahora incluye el guión table2excel (Recuerde cambiar el destino src para que coincida con el suyo)

<script src="dist/jquery.table2excel.min.js"></script> 

Ahora basta con llamar a la secuencia de comandos en la tabla que desea exportet.

$("#yourHtmTable").table2excel({ 
    exclude: ".excludeThisClass", 
    name: "Worksheet Name", 
    filename: "SomeFile" //do not include extension 
}); 

También es fácil de conectar a un botón, así:

$("button").click(function(){ 
    $("#table2excel").table2excel({ 
    // exclude CSS class 
    exclude: ".noExl", 
    name: "Excel Document Name" 
    }); 
}); 

Todos los ejemplos están tomados directamente de la página del autor github y desde jqueryscript.net