Trabalho 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

Trabalho com Excel em Kotlin: Apache POI e bibliotecas wrapper



Kotlin, como linguagem de programação moderna para JVM, oferece excelentes oportunidades para trabalhar com dados tabulares. Embora o ecossistema Kotlin não tenha suporte nativo para o formato .xlsx, você pode usar bibliotecas Java testadas, adaptadas à sintaxe Kotlin. Neste artigo, veremos a ferramenta principal — Apache POI — e dois wrappers Kotlin populares: poi-kotlin e kotlinpoi.



1. Apache POI — base para trabalhar com Excel



Apache POI é uma biblioteca Java madura para ler e escrever arquivos nos formatos Microsoft Office (OLE2 e OOXML). Para trabalhar com arquivos modernos .xlsx, use o submódulo poi-ooxml. Adicione a dependência no build.gradle.kts:



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


Lendo um arquivo Excel em Kotlin

Exemplo de leitura de dados da primeira planilha:

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

fun readExcel(filePath: String) { val file = FileInputStream(filePath) val workbook: Workbook = XSSFWorkbook(file) val sheet: Sheet = workbook.getSheetAt(0)

for (row in sheet) { for (cell in row) { when (cell.cellType) { CellType.STRING -> print("${cell.stringCellValue} ") CellType.NUMERIC -> print("${cell.numericCellValue} ") else -> print(" ") } } println() } workbook.close()}


Criando um arquivo Excel

Vamos criar uma tabela simples com cabeçalhos:

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

fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Dados")

// Cabeçalhos val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("Nome") headerRow.createCell(1).setCellValue("Idade") headerRow.createCell(2).setCellValue("Cidade")

// Dados val data = listOf( listOf("Ana", 25, "Moscou"), listOf("Ivan", 30, "SPb"), listOf("Maria", 22, "Kazan") )

data.forEachIndexed { index, rowData -> val row = sheet.createRow(index + 1) rowData.forEachIndexed { cellIndex, value -> row.createCell(cellIndex).setCellValue(value.toString()) } }

workbook.write(FileOutputStream("output.xlsx")) workbook.close()}


2. Biblioteca poi-kotlin — wrapper Kotlin-first



poi-kotlin (versão 0.3.0) é um wrapper leve sobre Apache POI que adiciona funções de extensão e sintaxe DSL, característica do Kotlin. Instalação:



repositories {    maven("https://jitpack.io")}dependencies {    implementation("com.github.nicklausw.poi-kotlin:poi-kotlin:0.3.0")}


Exemplo com poi-kotlin

import com.github.nicklausw.poi.kotlin.*

fun dslExample() { val workbook = workbook { sheet("Relatório") { row { cell("Produto") cell("Preço") cell("Quantidade") } row { cell("Notebook") cell(1200.0) cell(5) } row { cell("Mouse") cell(25.5) cell(10) } } } workbook.writeToFile("report.xlsx")}

O código ficou mais legível, e os blocos aninhados sheet { row { ... } } lembram a construção de marcação HTML.



3. Biblioteca kotlinpoi — abordagem funcional



kotlinpoi (ver

Recommendations