Trabalhando com Excel em Java: Apache POI e alternativas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 (.xls e .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

Recommendations