Trabalhando com Excel em Java: visão geral das bibliotecas e exemplos de código
Java — uma das linguagens mais populares para desenvolvimento corporativo, onde frequentemente surge a necessidade de interagir com planilhas eletrônicas do Microsoft Excel (formatos .xls e .xlsx). Seja para exportação de relatórios, importação de dados de CRM ou automação de relatórios contábeis — não é possível prescindir de uma ferramenta confiável para trabalhar com Excel. Neste artigo, analisaremos as principais bibliotecas para Java, suas capacidades, vantagens e desvantagens, além de fornecer exemplos práticos de código.
Bibliotecas populares para trabalhar com Excel em Java
Atualmente, existem várias soluções maduras. A escolha de uma biblioteca específica depende da versão do Excel, do volume de dados e da funcionalidade necessária.
- Apache POI — o padrão de facto. Suporta ambos os formatos (
.xlse.xlsx), permite ler, escrever, formatar células, trabalhar com fórmulas, gráficos e macros. É pesada, mas a biblioteca mais poderosa. - JExcelApi (jxl) — uma alternativa mais leve, mas suporta apenas o formato antigo
.xls. Adequada para tarefas simples onde não é necessário suporte a.xlsx. - EasyExcel (Alibaba) — versão simplificada baseada no POI, otimizada para trabalhar com arquivos grandes e processamento em fluxo. Excelente para importação/exportação de milhões de linhas.
- OpenCSV — não é diretamente para Excel, mas para trabalhar com CSV (que o Excel abre). Ideal para troca simples de dados tabulares sem formatação.
Exemplo 1: Lendo um arquivo Excel com Apache POI
Vamos considerar um cenário básico: abrir o arquivo data.xlsx e exibir o conteúdo da primeira página no console.
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;
public class ReadExcelExample { public static void main(String[] args) { String filePath = "data.xlsx";
try (FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // primeira página
for (Row row : sheet) { for (Cell cell : row) { switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\\t"); break; default: System.out.print("?\\t"); } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}Exemplo 2: Escrevendo dados no Excel com formatação
Vamos criar um novo arquivo report.xlsx com cabeçalhos e dados, destacando os cabeçalhos em negrito.
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;
public class WriteExcelExample { public static void main(String[] args) { try (Workbook workbook = new XSSFWorkbook()) { Sheet sheet = workbook.createSheet("Relatório");
// Estilo para cabeçalhos CellStyle headerStyle = workbook.createCellStyle(); Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setFontHeight Também na biblioteca
Geração de relatórios PDF em C# (.NET) com QuestPDF
GraphQL em PHP: Guia Completo da Biblioteca webonyx/graphql-php
Processamento JSON em TypeScript: tipagem, validação e parsing
Geração de PDF em TypeScript: visão geral das bibliotecas e ferramentas
Spring Boot para Java: guia completo com exemplos