Libreria Node.js open source per scrivere dati in file Excel
Una libreria Node.js Excel XLSX open source dedicata che fornisce un'API semplice per generare file .xlsx (Excel) e scrivere dati in file Excel in modalità streaming.
Cos'è Node-XLSX-Writer?
Nell'ambito dello sviluppo Node.js, generare report e esportare dati sono requisiti comuni. Sebbene esistano librerie potenti come exceljs, a volte è necessaria una soluzione focalizzata su un unico compito; scrivere file XLSX rapidamente ed efficientemente, senza l'overhead di leggere o manipolare file esistenti. Entra in gioco Node-XLSX-Writer, una libreria leggera e semplice progettata proprio per questo scopo. La libreria si distingue per la sua semplicità e funzionalità mirata. A differenza delle librerie Excel complete che gestiscono lettura, scrittura e manipolazione, questo modulo si concentra esclusivamente sulla scrittura di file XLSX, rendendolo leggero, facile da apprendere, con implementazione veloce e affidabile.
Node-XLSX-Writer è una libreria leggera e semplice progettata specificamente per generare file XLSX (Excel) nelle applicazioni Node.js. Per attività come la generazione di esportazioni simili a CSV con i vantaggi aggiunti della formattazione di Excel e del supporto a più fogli (tramite la sua API semplice), è una scelta eccellente che manterrà il tuo codice pulito e l'impronta di memoria dell'applicazione ridotta. Creata da Ruben Vermeersch e realizzata mediante reverse engineering da file XLSX di esempio, questo modulo offre agli sviluppatori un modo semplice ma efficace per esportare dati in formato Excel senza la complessità delle librerie più grandi per la manipolazione di Excel. Questo lo rende una scelta ideale per le applicazioni che devono generare grandi report da database o API, poiché la sua natura di streaming garantisce un basso utilizzo di memoria anche con set di dati massivi.
Guida introduttiva a Node-XLSX-Write
Prima di installare Node-XLSX-Writer, è necessario avere le librerie di sviluppo libzip installate sul tuo sistema. La libreria dipende da questi binding nativi per creare file zip (i file XLSX sono essenzialmente XML compressi). Si prega di utilizzare i seguenti comandi per un'installazione riuscita.
Installa Node-XLSX-Write via npm
npm install --save xlsx-writerPuoi scaricare la libreria condivisa compilata dal repository GitHub e installarla.
Creazione di fogli di calcolo Excel XLSX in Node.js
La libreria open source Node-XLSX-Writer include funzionalità per creare e gestire file Excel XLSX all'interno di applicazioni Node.js. La libreria non richiede Microsoft Excel o interop COM. Costruisce il file XLSX (che è essenzialmente un file ZIP di parti XML) programmaticamente. Questo la rende adatta per l'uso server-side di Node.js. Il seguente esempio di codice dimostra il modo più semplice per creare un file Excel con alcuni dati.
Come creare un file Excel XLSX all'interno delle app Node.js?
// Import the library
const XLSXWriter = require('node-xlsx-writer');
// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');
// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);
// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);
// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();
console.log('Excel file created successfully!');
Streaming per grandi set di dati
Qui è dove Node-XLSX-Writer brilla davvero. Invece di caricare tutti i dati in memoria, puoi streammare le righe una per una. Questo è perfetto per elaborare i risultati delle query di database. La libreria utilizza funzioni per emettere ogni record dal database. Lo scriviamo immediatamente come una nuova riga nel file Excel. Questo approccio mantiene costante l'uso della memoria, indipendentemente dal fatto che tu stia esportando 100 righe o 1 milione di righe.
Come eseguire lo streaming da un database nelle app Node.js?
// Import the library
const XLSXWriter = require('node-xlsx-writer');
// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');
// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);
// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);
// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();
console.log('Excel file created successfully!');
Stile personalizzato (carattere, colore, bordi)
Pur non essendo estesa quanto le suite complete, la libreria open source Node-XLSX-Writer fornisce opzioni di stile essenziali per rendere i tuoi report professionali. Supporta varie funzionalità per gestire gli stili nei fogli di calcolo, come rendere il carattere grassetto o corsivo, impostare il colore di sfondo e il colore del bordo, definire lo stile del bordo ('thin', 'medium', 'thick') e così via. Il seguente esempio mostra come gli sviluppatori software possano stilizzare la riga di intestazione all'interno delle app Node.js.
Come applicare lo stile alla riga di intestazione tramite la libreria Node.js?
const XLSXWriter = require('node-xlsx-writer');
const xlsx = new XLSXWriter('./output/styled_report.xlsx');
// Define a style object for the header
const headerStyle = {
bold: true,
background: 'FF2A52F5', // Blue background (ARGB Hex format)
color: 'FFFFFFFF', // White text
border: 'thin', // Thin border around cells
borderColor: 'FF000000' // Black border
};
// Apply the style when writing the header row
xlsx.writeRow(['Product', 'Category', 'Price', 'Stock'], headerStyle);
// Data rows are written without a style (or with a different one)
xlsx.writeRow(['Laptop', 'Electronics', 999.99, 15]);
xlsx.writeRow(['Desk Chair', 'Furniture', 249.50, 8]);
xlsx.finalize();