Exportar tabla HTML a Excel – usando jQuery o Java

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 resolver esto?

(Por ejemplo, ¿cómo haré esto usando puede ser una función jQuery?)

Cualquier ejemplo de código para propósitos de demostración debería ser excelente.

Recomendaría Apache POI , lo hemos usado durante años, nunca he tenido ningún problema.

Un montón de ejemplos en línea para comenzar bien, y la documentación en el sitio también es buena: http://poi.apache.org/spreadsheet/quick-guide.html

Más bien exportar a formato CSV . También es compatible con Excel. Exportar a un formato XLS (X) completo utilizando, por ejemplo, Apache POI HSSF o JExcepAPI es lento y está acallando la memoria.

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


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 una biblioteca de exportación de CSV , pero no puedo encontrar ninguna página de prueba factible.

Puede analizar la tabla usando una biblioteca como http://jsoup.org/

Después de obtener los datos, puede almacenarlos en formato compatible con Excel (CSV), o usar la biblioteca Java Excel para ese tipo de PDI, o usar JDBC para escribir datos en hojas de Excel, consulte este ejemplo: Archivo de Excel protegido con contraseña

También paso mucho tiempo para convertir html a excel después de mucho I & D que encontré siguiendo la forma más fácil.

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

  2. en el botón de href, haga clic en la función siguiente de llamada y pase sus datos html usando en document.formexcel.exceldata.value y su 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. Ahora en su controlador o servlet escriba el 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()); 

Excel puede cargar archivos CSV (valores separados por comas), que básicamente son solo archivos con todo lo que iría en celdas 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 usted descargaría, pero parece que se ha escrito una biblioteca jQuery que al menos transforma las tablas html al formato CSV, y está aquí: http: // www .kunalbabre.com / projects / table2CSV.php

Editar (29 de febrero de 2016): puede usar la implementación de table2csv anterior junto con FileSaver.js (que es un contenedor para la especificación HTML5 W3C saveAs() ).

El uso terminará luciendo algo así como:

 var resultFromTable2CSV = $('#table-id').table2CSV({delivery:'value'}); var blob = new Blob([resultFromTable2CSV], {type: "text/csv;charset=utf-8"}); saveAs(blob, 'desiredFileName.csv'); 

Exportar a formato de archivo Excel con JQuery es imposible.

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

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 esta biblioteca para ayudarlo a hacer la transformación.

Puedo sugerirle que pruebe http://code.google.com/p/gwt-table-to-excel/ , al menos la parte del servidor.

He estado usando el complemento jQuery table2excel . Funciona muy bien y no se necesita encoding en el servidor.

Usarlo es fácil. Simplemente incluye jQuery

  

Ahora incluya el script table2excel (recuerde cambiar el destino del src para que coincida con el suyo)

  

Ahora simplemente llame al script 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 adjuntar a un botón como ese:

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

Todos los ejemplos se toman directamente de la página de autores github y de jqueryscript.net