Trabalhando com Excel em TypeScript: visão geral das bibliotecas e exemplos práticos
TypeScript é uma extensão estritamente tipada do JavaScript, amplamente utilizada no desenvolvimento web, especialmente na criação de aplicações corporativas complexas. Uma das tarefas comuns é trabalhar com planilhas Excel: leitura de dados, geração de relatórios, exportação e importação. Neste artigo, abordaremos as principais bibliotecas para trabalhar com Excel em TypeScript e forneceremos exemplos práticos de código.
Bibliotecas populares para trabalhar com Excel em TypeScript
Atualmente, existem várias soluções estáveis. Vamos considerar as três mais populares:
- ExcelJS — uma biblioteca poderosa para ler, criar e editar arquivos XLSX. Suporta estilos, fórmulas, gráficos, proteção de planilhas e muito mais. Funciona no navegador e no Node.js.
- xlsx (SheetJS) — uma biblioteca leve para parsing e geração de planilhas. Ideal para processamento rápido de dados sem formatação complexa.
- node-xlsx — um wrapper simples sobre o xlsx, voltado para Node.js. Conveniente para exportação rápida de arrays de dados.
Neste guia, focaremos no ExcelJS, pois ele oferece o maior controle sobre a estrutura e os estilos do documento.
Instalação e configuração
Para começar, instale a biblioteca via npm:
npm install exceljsnpm install @types/node --save-dev // para tipos Node.jsCertifique-se também de que o TypeScript esteja configurado no seu projeto (arquivo tsconfig.json).
Criando um arquivo Excel simples
Exemplo de criação de um arquivo com cabeçalhos e dados:
import * as ExcelJS from 'exceljs';
async function createWorkbook() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Funcionários');
// Cabeçalhos sheet.columns = [ { header: 'ID', key: 'id', width: 10 }, { header: 'Nome', key: 'name', width: 25 }, { header: 'Cargo', key: 'position', width: 20 }, { header: 'Salário', key: 'salary', width: 15 }, ];
// Dados const employees = [ { id: 1, name: 'Ivan Petrov', position: 'Desenvolvedor', salary: 150000 }, { id: 2, name: 'Maria Smirnova', position: 'Designer', salary: 120000 }, { id: 3, name: 'Alexei Kuznetsov', position: 'Gerente', salary: 130000 }, ];
employees.forEach(emp => sheet.addRow(emp));
// Salvando await workbook.xlsx.writeFile('employees.xlsx'); console.log('Arquivo criado!');}
createWorkbook();Lendo dados do Excel
Leitura de um arquivo existente e conversão dos dados em objetos TypeScript:
import * as ExcelJS from 'exceljs';
interface Employee { id: number; name: string; position: string; salary: number;}
async function readWorkbook() { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile('employees.xlsx'); const sheet = workbook.getWorksheet('Funcionários'); const employees: Employee[] = [];
sheet.eachRow((row, rowNumber) => { if (rowNumber === 1) return; // pulando cabeçalhos employees.push({ id: row.getCell(1).value as number, name: row.getCell(2).value as string, position: row.getCell(3).value as string, salary: row.getCell(4).value as number, }); });
console.log('Funcionários lidos:', employees.length); console.log(employees);}
readWorkbook();Formatação e estilos
O ExcelJS permite personalizar a aparência das células: fontes, preenchimento, bordas, alinhamento. Exemplo de adição de estilos aos cabeçalhos:
import * as ExcelJS from 'exceljs';
async function styledWorkbook() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Relatório');
// Definindo estilo para cabeçalhos const headerStyle: Partial& Também na biblioteca
Trabalhando com YAML em Node.js: bibliotecas js-yaml e yaml
Processamento de imagens em C#: redimensionar e cortar com a biblioteca ImageSharp
Bibliotecas WebSocket para Node.js: ws, Socket.IO e uWebSockets.js
Cliente Redis para C# (.NET): StackExchange.Redis