Trabalhando com Excel em Kotlin: bibliotecas Apache POI e wrappers Kotlin

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 Kotlin: visão geral das bibliotecas e exemplos práticos



Kotlin, como uma linguagem JVM moderna, possui excelente compatibilidade com o ecossistema Java. Para trabalhar com arquivos Excel (.xls e .xlsx), a solução mais poderosa e difundida é a biblioteca Apache POI. Ela permite criar, ler e modificar documentos do Microsoft Office. Neste artigo, veremos como usar o Apache POI em Kotlin, além de conhecer wrappers especializados do Kotlin que simplificam o código.



1. Adicionando Apache POI ao projeto Kotlin



Adicione as dependências no arquivo build.gradle.kts (para Gradle Kotlin DSL):



dependencies {    implementation("org.apache.poi:poi:5.2.5")    implementation("org.apache.poi:poi-ooxml:5.2.5")}


Para Maven, use os artefatos correspondentes poi e poi-ooxml.



Importante: poi-ooxml é necessário para trabalhar com o formato .xlsx (Office Open XML), enquanto poi é para o formato antigo .xls (HSSF).


2. Criando e escrevendo um arquivo Excel (XLSX) em Kotlin



Vamos criar uma pasta de trabalho simples com uma planilha e escrever dados.



import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileOutputStream

fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Funcionários")

// Cabeçalhos val headerRow = sheet.createRow(0) val headers = listOf("ID", "Nome", "Cargo", "Salário") headers.forEachIndexed { index, header -> headerRow.createCell(index).setCellValue(header) }

// Dados val data = listOf( listOf(1, "Ivan Petrov", "Desenvolvedor", 120000.0), listOf(2, "Maria Smirnova", "Analista", 95000.0), listOf(3, "Alexei Kuznetsov", "Testador", 85000.0) )

data.forEachIndexed { rowIndex, rowData -> val row = sheet.createRow(rowIndex + 1) rowData.forEachIndexed { colIndex, value -> when (value) { is Int -> row.createCell(colIndex).setCellValue(value.toDouble()) is Double -> row.createCell(colIndex).setCellValue(value) is String -> row.createCell(colIndex).setCellValue(value) } } }

// Largura automática das colunas for (i in headers.indices) { sheet.autoSizeColumn(i) }

// Salvando FileOutputStream("employees.xlsx").use { stream -> workbook.write(stream) } println("Arquivo criado: employees.xlsx")}


Pontos-chave:

  • XSSFWorkbook — classe para trabalhar com .xlsx (XSSF). Para .xls, use HSSFWorkbook.
  • Linhas e células são indexadas a partir de 0.
  • autoSizeColumn ajusta automaticamente a largura das colunas ao conteúdo.
  • Em Kotlin, é conveniente usar use para fechar automaticamente o fluxo.


3. Lendo um arquivo Excel em Kotlin



Vamos ler o arquivo criado anteriormente e exibir os dados no console.



import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileInputStream

fun readExcel() { FileInputStream("employees.xlsx").use { stream -> val workbook = XSSFWorkbook(stream) val sheet = workbook.getSheetAt(0)

for (row in sheet) { for (cell in row) { when (cell.cellType) { CellType.STRING -> print("${cell.stringCellValue}\\t") CellType.NUMERIC -> print("${cell.numericCellValue}\\t") CellType.BOOLEAN -> print("${cell.booleanCellValue}\\t") else -> print("?\\t") } } println() } }}


Observe a verificação do tipo de célula usando cell.cellType.

Recommendations