Trabajo con Excel en JavaScript (Node.js): reseña de bibliotecas y ejemplos de código
A pesar de que PythonLib está dedicado al lenguaje Python, el trabajo con hojas de cálculo de Excel también se requiere a menudo en el entorno Node.js. JavaScript (especialmente en el lado del servidor) se utiliza activamente para la automatización de informes, la importación de datos desde sistemas CRM y la generación de listas de precios. En este artículo, analizaremos las tres bibliotecas principales para trabajar con Excel en Node.js, sus capacidades y proporcionaremos ejemplos prácticos de código.
¿Por qué Node.js para Excel?
Node.js es la elección ideal para microservicios y scripts que procesan grandes volúmenes de datos. Las bibliotecas para Excel permiten:
- Leer archivos
.xlsxy.xlsexistentes. - Crear nuevas tablas desde cero.
- Formatear celdas (colores, fuentes, bordes).
- Trabajar con fórmulas, estilos y celdas combinadas.
- Exportar datos a CSV.
Top 3 bibliotecas para Excel en Node.js
1. ExcelJS — el más funcional
ExcelJS es una potente biblioteca con soporte completo para el formato xlsx. Permite trabajar con flujos (streams), lo cual es crítico para archivos grandes. Soporta estilos, formato condicional, gráficos y protección de hojas.
Instalación:
npm install exceljsEjemplo 1: Lectura de un archivo existente
const ExcelJS = require('exceljs');
async function readExcel(filePath) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(filePath); const worksheet = workbook.getWorksheet(1); // Primera hoja worksheet.eachRow((row, rowNumber) => { console.log(`Fila ${rowNumber}: ${row.values.join(', ')}`); });}
readExcel('data.xlsx');Ejemplo 2: Creación de un archivo con formato
const ExcelJS = require('exceljs');
async function createStyledExcel() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Informe'); // Encabezado con negrita y relleno const headerRow = sheet.getRow(1); headerRow.values = ['Nombre', 'Edad', 'Ciudad']; headerRow.font = { bold: true, size: 12 }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } // Fondo amarillo }; // Datos sheet.addRow(['Ana', 28, 'Moscú']); sheet.addRow(['Iván', 35, 'San Petersburgo']); // Ancho de columnas sheet.getColumn(1).width = 15; sheet.getColumn(2).width = 10; await workbook.xlsx.writeFile('output.xlsx'); console.log('¡Archivo creado!');}
createStyledExcel();2. xlsx (SheetJS) — ligero y rápido
La biblioteca xlsx (también conocida como SheetJS) es un "caballo de batalla" para operaciones simples. No soporta formato avanzado, pero maneja muy bien la lectura/escritura de datos. Soporta los formatos xlsx, xls, csv, ods.
Instalación:
npm install xlsxEjemplo 3: Lectura y conversión a JSON
const XLSX = require('xlsx');
function readToJSON(filePath) { const workbook = XLSX.readFile(filePath); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; // Convertimos la hoja en un array de objetos const data = XLSX.utils.sheet_to_json(sheet); console.log(data);}
readToJSON('data.xlsx');Ejemplo 4: Escritura de un array de datos
const XLSX = require('xlsx');
function writeFromArray() { const data = [ { Name: 'Olga', Age: 30, City: 'Kazán' }, { Name: 'Pedro', Age: 42, City: 'Ekaterimburgo' } ]; const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils También en la biblioteca
Parseo de HTML en TypeScript: bibliotecas, herramientas y ejemplos de código
Event Bus y patrón Observer en C++: implementación en C++ moderno
Envío de correo electrónico en Java: guía completa de JavaMail y Jakarta Mail