Si estás buscando cómo crear un archivo excel nodejs y descargarlo, estás en el lugar indicado. Claro que excel debe estar en cualquier proyecto sea o no de desarrollo, Node js nos presenta una solución para poder usar nuestros datos en excel sin problema y fácil de configurar.
En este nuevo post usaremos un paquete llamado excel4node para poder crear un libro de trabajo, con una hoja de excel lista para recibir datos desde nuestra base de datos o bien, desde cualquier parte de nuestra web. Así que para comenzar te dejo algunos enlaces que vas a necesitar.
Contenido
Lo que vas a necesitar
- Excel4node: haz click aquí para ver la información del paquete que usaremos en este post.
- Repositorio: en el video trabajo con mi código el cual te dejo listo en el repositorio para que puedas usar sin problema. Haz click aquí para ver en github.
- file system: haz click aquí para ver la información referente a la función de borrado que creamos al final.
Instalar excel4node
Cómo crear modal react: paso a paso
Crear modales en React es fundamental para mantener a los usuarios en el sitio web y facilitar conve…
Inspeccionar desde móvil IOS o Android: chrome y safari
Hacer pruebas en nuestro proyecto o desarrollo web es clave para llevarlo acabo correctamente y para…
Cómo implementar Sepolia: Red de prueba de Ethereum
Antes de implementar un contrato en una red de mainnet como Ethereum debemos primero saber cómo impl…
El primer paso claramente es la instalación y aunque en la web de npm encontraremos mucha información, aquí te voy a dejar algunos atajos par la instalación. Excel nodejs será mucho más fácil así. Primero, dentro de la terminal, escribe el siguiente comando:
npm i excel4node
Asegúrate de ya tener lista tu aplicación Nodejs y de hecho algunos paquetes ya instalados. En este proceso solo nos vamos a enfocar en el funcionamiento para excel nodejs usando excel4node. A continuación solicita el paquete y guárdalo en una variable, tal cual como todos los paquetes, así:
const xl = require('excel4node');
Este paso permitirá comenzar a usar el paquete dentro de nuestro programa. Claro que si planeas usarlo dentro de una función, debes solicitarlo en esta misma.
Crear libro de trabajo y hoja de excel
Lo primero que debemos hacer es crear la instancia del libro de trabajo (workbook) el cual contendrá toda la información, datos y hojas que crearemos. Para esto, vamos a ingresar en nuestro programa:
var wb = new xl.Workbook();
Agregar fecha al nombre del archivo
Este plus te lo dejo porque sé que lo vas a necesitar. La mayoría de estos usos es para actualizar registros o contabilidad, por ende necesitarás las fecha en ellos. Así que primero ingresa las funciones para obtener la fecha actual con getUTCDate:
let date = new Date();
let fechaDia = date.getUTCDate();
let fechaMes = (date.getUTCMonth()) + 1;
let fechaAño = date.getUTCFullYear();
let fechaHora = date.getUTCHours();
let fechaMinuto = date.getUTCMinutes();
A continuación, inmediatamente luego de crear el libro de trabajo, podrás crear la variable del nombre del archivo incluyendo la fecha obtenida en la función anterior. A continuación, podrás crear la hoja de excel adjuntando ese nombre que hemos creado. Así:
let nombreArchivo = "todosUsuarios" + fechaDia + "_" + fechaMes + "_" + fechaAño + ".";
var ws = wb.addWorksheet(nombreArchivo);
Crear ruta de archivo excel
El Siguiente paso consiste en crear la ruta del archivo de excel ya que esta se usará para crear el archivo dentro de nuestro programa o repositorio local, y adicional para borrar en una función siguiente. Ahora lo primero es solicitar la ruta (path) que viene por defecto con nodejs y express (en dado caso que lo estés usando):
const path = require('path');
A continuación, el paso es crear la ruta y guardarla en una variable. Como argumentos:
- primero agregamos dirname el cual nos permite abreviar la ruta hasta la carpeta, folder o ubicación donde está nuestro programa.
- El segundo argumento es una carpeta que creé para que dentro de guarden los archivos de excel creados y no se combinen con los otros archivos.
- En el tercer argumento si agregamos la variable donde guardamos el nombre de archivo con la fecha, justo arriba.
- Por último, agregamos la extensión del archivo excel.
const pathExcel = path.join(__dirname, 'excel', nombreArchivo + '.xlsx');
Crear, descargar y borrar excel
Esta función se divide en 3 pasos. El primer paso es escribir o crear el archivo DENTRO de nuestro programa o repositorio local. Usando la siguiente línea de código:
wb.write(pathExcel, function(err, stats){
if(err) console.log(err);
else{
// aquí van las siguientes partes
Como lo notamos, solo se necesita la ruta donde se creará el archivo excel. Claro que necesita la función callback donde si tiene un error lo mostrará, de lo contrario procedemos a descargar.
Descargar y borrar archivo excel
Estos dos los creamos juntos, o bueno los creo juntos porque a medida que descargamos, crea un nuevo archivo por ende ocupa almacenamiento que tal vez no será necesario. Por esto, ejecuto la función de borrado inmediatamente luego de descargar. Pero bueno primero descargamos con:
function downloadFile(){res.download(pathExcel);}
downloadFile();
Primero creamos la función con la ruta del archivo la cual es donde se encuentra justo luego de escribir o crearlo. A continuación, ejecutamos la función y listo! ya estará en tu computador en el folder de descargas.
Ahora procederemos a borrar el archivo que se creó en el repositorio local o folder de tu programa el cual si o si debes eliminar ya que en producción, se incrementará cada vez que se solicite descargar. Para la función de borrar, ingresa la siguiente línea:
fs.rm(pathExcel, function(err){
if(err) console.log(err);
else console.log("Archivo descargado y borrado del servidor correctamente");
});
En la anterior función, uso fs (file system) el cual viene por defecto con node js para administrar estos archivos locales o producción. Uso adicional .rm (remove) porque elimina eficazmente los archivos solicitados no solamente localmente sino en producción. Claramente probado.
Si quieres ver más información de file system, en la primera parte del post podrás encontrar el enlace. Ahora todo está listo para proceder a crear los datos que se ingresarán en el excel.
Crear estilos
Los estilos permiten modificar la tipografía de los datos que se ingresan a la hoja de excel. Estos son usados o ingresados como argumentos al crear dato por dato. Primero vamos a crear los estilos. Claramente puedes modificarlos a tu gusto:
var cualColumnaEstilo = wb.createStyle({
font: {
name: 'Arial',
color: '#000000',
size: 12,
bold: true,
}
});
var contenidoEstilo = wb.createStyle({
font: {
name: 'Arial',
color: '#494949',
size: 11,
}
});
Crear datos
El comando es sencillo, pero si se deben analizar ciertos pasos. Primero ingresemos un ejemplo:
ws.cell(1, 1).string("Nombre").style(cualColumnaEstilo);
- Ubicación: dentro del primer paréntesis encontrarás las coordenadas de la celda a escribir. En el caso anterior, fila 1, columna 1.
- Tipo de dato: si el dato es string o number, debes asignarlo a cada dato ingresado.
- Dato: dentro del segundo paréntesis, ingresa el dato que irá dentro de la celda.
- Estilo: por último, ingresa uno de los estilos creados anteriormente.
Ahora si tienes cientos o miles de datos a ingresar en la tabla de excel, es probable que necesites usar foreach o for en el proceso para poder crearlos. Para este proceso hice el video a continuación donde te guío en el proceso completo y uso ambos ejemplos para un arreglo de objetos. Espero que te guste!
Video de ayuda
Producto sugerido
Si eres como yo que pasa bastatne tiempo frente al compu, puede que la barra de luz te sirva bastante para cuidar tu vista en esas largas jornadas. También te dejo aquí el post para que veas la reseña completa.
Quntis Lámpara para monitor de computadora, barra de luz para monitor de pantalla para el cuidado de los ojos, lámpara de tareas LED de lectura electrónica con atenuación automática, barra de lámpara regulable, control táctil, sin deslumbramiento de pantalla, ahorro de espacio, lámparas de escritorio para oficina en casa
- Sin reflejos de pantalla y sin parpadeo, antiluz azul: la barra de luz para monitor de computadora Quntis tiene un diseño óptico asimétrico único que ilumina solo tu escritorio y teclado mientras garantiza que no se reflejen en la pantalla. Gracias a su avanzado sistema de protección ocular, nuestras lámparas de escritorio para oficina en casa bloquean la luz azul y la radiación óptica, aliviando eficazmente la fatiga ocular para proteger tus ojos. Es la opción ideal para estudiantes, diseñadores de pintura y trabajadores de oficina de negocios.
Conclusión
Node js nos permite crear increíbles aplicaciones y si a esto, necesitamos descargar información clave de la base de datos y luego guardarlos en excel, excel4node es la mejor solución sin duda alguna.