Trabalhando com Excel em TypeScript: visão geral completa das ferramentas
TypeScript, como uma extensão estaticamente tipada sobre JavaScript, oferece excelentes possibilidades para a criação de aplicações corporativas complexas. Uma das tarefas frequentes é trabalhar com arquivos Microsoft Excel — ler, criar e editar tabelas. Neste artigo, vamos analisar as melhores bibliotecas para trabalhar com Excel em TypeScript, suas características e fornecer exemplos práticos de código.
Bibliotecas populares para trabalhar com Excel
Atualmente, existem várias soluções maduras. Aqui estão as principais:
- ExcelJS — a biblioteca mais poderosa com suporte a estilos, fórmulas, gráficos e processamento em fluxo.
- xlsx (SheetJS) — uma biblioteca leve e rápida, ideal para operações simples de leitura/escrita.
- node-excel-export — desatualizada, mas ainda usada em projetos legados.
- Excel4Node — especializada na criação de relatórios complexos com formatação.
Para a maioria dos projetos modernos em TypeScript, recomendamos ExcelJS e xlsx (SheetJS). Vamos analisá-los em detalhes.
Instalação e configuração
A instalação de ambas as bibliotecas é feita via npm:
npm install exceljsnpm install xlsxPara TypeScript, é necessário instalar os tipos (se não vierem incluídos):
npm install --save-dev @types/nodeObserve: o ExcelJS vem com tipos embutidos, enquanto para o xlsx os tipos precisam ser instalados separadamente:
npm install --save-dev @types/xlsxExemplo 1: Criando um arquivo Excel com ExcelJS
Vamos criar uma tabela simples com dados e estilos:
import ExcelJS from 'exceljs';
async function createWorkbook() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Relatório');
// Definindo colunas sheet.columns = [ { header: 'ID', key: 'id', width: 10 }, { header: 'Nome', key: 'name', width: 25 }, { header: 'Data', key: 'date', width: 15 }, { header: 'Valor', key: 'amount', width: 12 } ];
// Adicionando linhas sheet.addRow({ id: 1, name: 'João Pedro', date: '2024-01-15', amount: 1500.50 }); sheet.addRow({ id: 2, name: 'Maria Silva', date: '2024-02-20', amount: 2300.75 }); sheet.addRow({ id: 3, name: 'Alexandre Santos', date: '2024-03-10', amount: 890.25 });
// Estilizando o cabeçalho const headerRow = sheet.getRow(1); headerRow.font = { bold: true, size: 12, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } }; headerRow.alignment = { horizontal: 'center' };
// Salvando o arquivo await workbook.xlsx.writeFile('output.xlsx'); console.log('Arquivo criado!');}
createWorkbook();Este código cria um arquivo output.xlsx com três linhas de dados e um cabeçalho estilizado.
Exemplo 2: Lendo um arquivo Excel com xlsx (SheetJS)
Vamos ler um arquivo existente e exibir os dados no console:
import * as XLSX from 'xlsx';
function readExcel(filePath: string) { const workbook = XLSX.readFile(filePath); const sheetName = workbook.SheetNames[0]; // Pegando a primeira planilha const worksheet = workbook.Sheets[sheetName];
// Convertendo para JSON const data: any[] = XLSX.utils.sheet_to_json(worksheet);
console.log('Dados do arquivo:'); data.forEach((row, index) => { console.log(`Linha ${index + 1}:`, row); });
return data;}
// Usoconst data = readExcel('input.xlsx');A biblioteca xlsx converte automaticamente a tabela em um array de objetos, onde as chaves são os cabeçalhos das colunas
Também na biblioteca
Criptografia em PHP: criptografia e hash (guia prático)
Agendador de Tarefas em Go (Golang): cron, gocron e asynq
Filas de tarefas para TypeScript: Bull, Agenda e Bee-Queue