Biblioteca Node.js de Código Aberto para Gravar Dados em Arquivos Excel
Uma Biblioteca Node.js de Excel XLSX Dedicada e de Código Aberto que Fornece uma API Simples para Gerar Arquivos .xlsx (Excel) e Gravar Dados em Arquivos Excel em Modo Streaming.
O que é Node-XLSX-Writer?
No mundo do desenvolvimento Node.js, gerar relatórios e exportar dados são requisitos comuns. Embora existam bibliotecas poderosas como o exceljs, às vezes você precisa de uma solução focada em uma única tarefa; escrever arquivos XLSX rápida e eficientemente, sem a sobrecarga de leitura ou manipulação de arquivos existentes. Apresentamos o Node-XLSX-Writer, uma biblioteca leve e direta projetada exatamente para esse propósito. A biblioteca se destaca pela sua simplicidade e funcionalidade focada. Ao contrário de bibliotecas Excel abrangentes que lidam com leitura, escrita e manipulação, este módulo concentra‑se apenas em escrever arquivos XLSX, tornando‑o leve, fácil de aprender, de implementação rápida e confiável.
Node-XLSX-Writer é uma biblioteca leve e direta projetada especificamente para gerar arquivos XLSX (Excel) em aplicativos Node.js. Para tarefas como gerar exportações semelhantes a CSV com os benefícios adicionais de formatação do Excel e suporte a múltiplas planilhas (através de sua API simples), é uma ótima escolha que manterá seu código limpo e a pegada de memória da sua aplicação pequena. Criado por Ruben Vermeersch e engenheirado a partir de arquivos XLSX de exemplo, este módulo oferece aos desenvolvedores uma maneira simples, porém eficaz, de exportar dados para o formato Excel sem a complexidade das bibliotecas maiores de manipulação de Excel. Isso o torna ideal para aplicações que precisam gerar relatórios grandes a partir de bancos de dados ou APIs, já que sua natureza de streaming garante baixo uso de memória mesmo com conjuntos de dados massivos.
Começando com Node-XLSX-Write
Antes de instalar o Node-XLSX-Writer, você precisa ter as bibliotecas de desenvolvimento libzip instaladas no seu sistema. A biblioteca depende dessas ligações nativas para criar arquivos zip (arquivos XLSX são essencialmente XML compactado). Por favor, use os seguintes comandos para uma instalação bem-sucedida.
Instale Node-XLSX-Write via npm
npm install --save xlsx-writerVocê pode baixar a biblioteca compartilhada compilada do repositório do GitHub e instalá‑la.
Criação de Planilhas Excel XLSX em Node.js
A biblioteca open‑source Node‑XLSX‑Writer inclui recursos para criar e manipular arquivos Excel XLSX dentro de aplicações Node.js. A biblioteca não requer Microsoft Excel ou interoperabilidade COM. Ela cria o arquivo XLSX (que é essencialmente um arquivo ZIP de partes XML) programaticamente. Isso a torna adequada para uso em Node.js no lado do servidor. O exemplo de código a seguir demonstra a maneira mais simples de criar um arquivo Excel com alguns dados.
Como criar um arquivo Excel XLSX dentro de aplicativos 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 para Grandes Conjuntos de Dados
É aqui que o Node‑XLSX‑Writer realmente se destaca. Em vez de carregar todos os dados na memória, você pode transmitir linhas uma a uma. Isso é perfeito para processar resultados de consultas ao banco de dados. A biblioteca usa funções para emitir cada registro do banco de dados. Nós gravamos imediatamente como uma nova linha no arquivo Excel. Essa abordagem mantém o uso de memória constante, independentemente de você estar exportando 100 linhas ou 1 milhão de linhas.
Como fazer streaming a partir de um banco de dados dentro de aplicativos 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!');
Estilização Personalizada (Fonte, Cor, Bordas)
Embora não seja tão abrangente quanto suítes completas, a biblioteca open‑source Node‑XLSX‑Writer oferece opções essenciais de estilo para que seus relatórios tenham aparência profissional. Ela oferece suporte a vários recursos de formatação em planilhas, como deixar a fonte em negrito ou itálico, definir cor de fundo e cor da borda, definir o estilo da borda (fina, média, espessa) e assim por diante. O exemplo a seguir mostra como os desenvolvedores podem estilizar a linha de cabeçalho dentro de aplicativos Node.js.
Como aplicar estilo à linha de cabeçalho via biblioteca 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();