El año pasado tuve la oportunidad de hacer un desarrollo en la empresa en la que estoy colaborando,
que se necesitaba "Generar un fichero excel de tablas con datos con librería de javascript" que se tenían en la pagina frontal.
Esto me llevo a investigar un poco y encontré una muy buena opción y gratuita llamada Sheet.js
Y esta librería permite generar ficheros excel a partir de datos, ya sea en formato json, array, html string No fue fácil , después de varias pruebas pude lograr una versión funcional para esta aplicación,
a continuación te muestro los puntos mas importantes de esta :
1) si vas a manejar una tabla lo mejor es armar la tabla con las filas y columnas que vas a necesitar, esto lo puedes hacer atraves de los strings, y vas encadenando y armando un string con html
1.1) es importante anotar que si vas a manejar datos de tipo moneda, o decimales puedes usar la siguiente especificación de Sheet.js para que los datos ya vengan formateados al momento de descargar el fichero
<td data-z='#,##0.00_);\\(#,##0.00\\)'>
2) luego de construir el html string , tenemos que crear un div de manera virtual,
var eleme = document.createElement("div")
3) luego se pasa el html string al inner del elemento que hemos creado
eleme.innerHtml = html string
y se sube al body de la pagina --> document.body.appenchild(eleme)
4) Ahora viene la magia de SheetJS, en el html string decía que se debía crear una tabla y a esta le das un ID, con ese ID, localizamos la tabla que hemos creado virtualmente y que contiene datos,
algo así:
var tabla = document,getElementByID("TablaID")
var wb = XLSX.utils.table_to_book(tabla) --> este código es muy importante ya que permite crear el WorkBook de Excel en memoria con los datos de la tabla ya formateada, esto ya lo hace SheetJS
5) Se elimina el elemento virtual del DOM de la pagina--> removeChild(eleme)
6) Y se da por escribir y descargar lo que tenemos en memoria WB
XLSX.writefile(wb, 'prueba.xlsx')
Con esto ya se tiene lo funcional para poder descargar un fichero en condiciones a partir de una tabla html
Espero te sirva y que puedas seguir ideando mas funcionalidades con esta librería, vale la pena, luego de que se aprende ya es mas fácil controlar
Estamos en contacto !
No hay comentarios.:
Publicar un comentario