Trabajo con Excel en JavaScript (Node.js): reseña de bibliotecas y ejemplos prácticos
A pesar de que PythonLib está dedicado al lenguaje Python, en el desarrollo web moderno a menudo surge la necesidad de procesar hojas de cálculo Excel en el lado del servidor usando Node.js. JavaScript (Node.js) es un entorno potente para crear aplicaciones de servidor, y trabajar con hojas de cálculo es una de las tareas más demandadas. En este artículo revisaremos tres bibliotecas principales para trabajar con Excel en Node.js: node-xlsx (xlsx), exceljs y excel4node, y proporcionaremos ejemplos de su uso.
¿Por qué es necesario trabajar con Excel en Node.js?
En el lado del servidor a menudo se requiere:
- Generar informes en formato XLSX para que los usuarios los descarguen;
- Importar datos de archivos Excel cargados a una base de datos;
- Procesar automáticamente listas de precios, tablas de contabilidad y otros documentos;
- Crear informes complejos con formato, gráficos y estilos.
Node.js maneja estas tareas de manera excelente, proporcionando varias bibliotecas especializadas.
Biblioteca xlsx (SheetJS)
SheetJS (paquete xlsx) es la biblioteca más popular y madura para trabajar con Excel en JavaScript. Soporta la lectura y escritura de múltiples formatos: XLSX, XLS, CSV, ODS y otros. Su principal ventaja es la simplicidad y velocidad.
Instalación
npm install xlsxEjemplo: creación y guardado de un archivo Excel
const XLSX = require('xlsx');
// Creamos un nuevo libro de trabajoconst workbook = XLSX.utils.book_new();
// Datos para la tablaconst data = [ ['Nombre', 'Edad', 'Ciudad'], ['Ana', 28, 'Moscú'], ['Iván', 35, 'San Petersburgo'], ['María', 22, 'Kazán']];
// Convertimos el array en una hojaconst worksheet = XLSX.utils.aoa_to_sheet(data);
// Añadimos la hoja al libroXLSX.utils.book_append_sheet(workbook, worksheet, 'Usuarios');
// Escribimos el archivo en discoXLSX.writeFile(workbook, 'users.xlsx');console.log('¡Archivo users.xlsx creado!');Ejemplo: lectura de un archivo existente
const XLSX = require('xlsx');
const workbook = XLSX.readFile('users.xlsx');const sheetName = workbook.SheetNames[0]; // Tomamos la primera hojaconst worksheet = workbook.Sheets[sheetName];
// Convertimos la hoja en un array de objetosconst jsonData = XLSX.utils.sheet_to_json(worksheet);console.log(jsonData);Biblioteca exceljs
ExcelJS es una biblioteca más moderna y funcional. Proporciona amplias capacidades de formato: estilos de celdas, fuentes, colores, combinación de celdas, formato condicional, trabajo con imágenes y gráficos. Soporta flujos (streams) para trabajar con archivos grandes.
Instalación
npm install exceljsEjemplo: creación de un informe con formato
const ExcelJS = require('exceljs');
async function createReport() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Informe');
// Definimos las columnas sheet.columns = [ { header: 'Producto', key: 'product', width: 30 }, { header: 'Precio', key: 'price', width: 15 }, { header: 'Cantidad', key: 'quantity', width: 15 } ];
// Añadimos datos sheet.addRow({ product: 'Portátil', price: 75000, quantity: 10 }); sheet.addRow({ product: 'Ratón', price: 1500, quantity: 50 }); sheet.addRow({ product: 'Teclado', price: 3500, quantity: 30 });
// Damos formato al encabezado const headerRow = sheet.getRow(1); headerRow.font = { bold: true, size: 12, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// Alineación headerRow.alignment = { vertical: 'middle', horizontal: 'ce También en la biblioteca
Limitación de tasa en C++: bibliotecas y herramientas para control de solicitudes
neverthrow para TypeScript: guía completa con ejemplos
Colas de tareas en C# (.NET): System.Threading.Channels, Hangfire y RabbitMQ
Trabajo con S3 y almacenamiento en la nube en Swift (iOS/macOS): AWSS3 y Amplify
Cliente Elasticsearch para C++: elasticlient y guía completa