Trabajo con Excel en JavaScript (Node.js)
El desarrollo web moderno a menudo requiere la interacción programática con hojas de cálculo. La exportación de informes, la importación de datos desde sistemas contables, el procesamiento de grandes volúmenes de información: todo esto hace que trabajar con Excel en Node.js sea una tarea demandada. En este artículo, revisaremos las tres bibliotecas más populares para trabajar con el formato XLSX: xlsx, exceljs y excel4node. Aprenderá cómo instalar cada una de ellas, crear, editar y leer archivos de Excel.
Biblioteca xlsx (SheetJS)
xlsx es la biblioteca más popular y ligera para trabajar con hojas de cálculo en Node.js. Soporta no solo XLSX, sino también XLS, CSV, ODS y otros formatos. Su principal ventaja es la simplicidad de la API y la alta velocidad de trabajo.
Instalación:
npm install xlsxEjemplo: creación y escritura de un archivo Excel
const XLSX = require('xlsx');
// Creamos una hoja de trabajo con datosconst data = [ { Nombre: 'Ana', Edad: 28, Ciudad: 'Moscú' }, { Nombre: 'Iván', Edad: 35, Ciudad: 'San Petersburgo' }, { Nombre: 'Olga', Edad: 22, Ciudad: 'Kazán' }];
const worksheet = XLSX.utils.json_to_sheet(data);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, 'Empleados');
// Guardamos el archivoXLSX.writeFile(workbook, 'employees.xlsx');console.log('¡Archivo employees.xlsx creado!');Ejemplo: lectura de un archivo existente
const workbook = XLSX.readFile('employees.xlsx');const sheetName = workbook.SheetNames[0];const worksheet = workbook.Sheets[sheetName];const jsonData = XLSX.utils.sheet_to_json(worksheet);
console.log('Datos del archivo:', jsonData);Ventajas:
- Tamaño mínimo (alrededor de 50 KB comprimido)
- Soporte para múltiples formatos (XLSX, XLS, CSV, ODS)
- API simple para conversión JSON ↔ tabla
Desventajas:
- Capacidades de formato limitadas (estilos, fuentes, colores)
- Dificultades con celdas combinadas y fórmulas complejas
Biblioteca exceljs
exceljs es una biblioteca avanzada para trabajar con archivos XLSX. Proporciona control total sobre el formato: puede gestionar fuentes, colores, bordes, celdas combinadas, formato condicional e incluso agregar imágenes.
Instalación:
npm install exceljsEjemplo: creación de un informe formateado
const ExcelJS = require('exceljs');
async function createReport() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Informe');
// Definimos las columnas worksheet.columns = [ { header: 'Producto', key: 'product', width: 20 }, { header: 'Cantidad', key: 'quantity', width: 15 }, { header: 'Precio', key: 'price', width: 15 } ];
// Agregamos datos worksheet.addRow({ product: 'Portátil', quantity: 10, price: 75000 }); worksheet.addRow({ product: 'Ratón', quantity: 50, price: 1500 });
// Formato del encabezado const headerRow = worksheet.getRow(1); headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// Formato de las celdas de precios const priceColumn = worksheet.getColumn(3); priceColumn.numFmt = '#,##0.00';
// Guardamos await workbook.xlsx.writeFile('report.xlsx'); console.log('¡Informe creado con formato!');}
createReport();Ejemplo: lectura y modificación de un archivo
const workbook = new ExcelJS.Workbook();await workbook.xlsx.readFile('report.xlsx');const worksheet = w