Trabajo con Excel en Kotlin: bibliotecas Apache POI y Apache POI para Kotlin

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Excel en Kotlin: bibliotecas Apache POI y envoltura para Kotlin



Kotlin, siendo un lenguaje de programación moderno para la JVM, ofrece excelentes oportunidades para automatizar el trabajo con documentos ofimáticos. En este artículo, veremos cómo trabajar eficazmente con archivos Excel (XLS y XLSX) en Kotlin, utilizando las populares bibliotecas Apache POI y su envoltura orientada a Kotlin Apache POI for Kotlin.



¿Por qué Kotlin para trabajar con Excel?

Kotlin ofrece una sintaxis más concisa y segura en comparación con Java, lo que es especialmente útil al trabajar con las voluminosas API de Excel. Usando Kotlin, usted puede:

  • Reducir la cantidad de código repetitivo
  • Usar tipos seguros y null-safety
  • Aplicar funciones de extensión para mejorar la legibilidad
  • Integrarse fácilmente con bibliotecas Java existentes


Biblioteca principal: Apache POI

Apache POI es el estándar de facto para trabajar con documentos de Microsoft Office en el ecosistema JVM. Soporta:

  • Lectura y escritura de XLS (HSSF) y XLSX (XSSF)
  • Trabajo con fórmulas, estilos, celdas combinadas
  • Creación de gráficos y tablas dinámicas
  • Procesamiento de archivos grandes mediante SXSSF (streaming)


Para agregarlo en Gradle (Kotlin DSL), añada en build.gradle.kts:

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


Biblioteca envoltura: Apache POI for Kotlin

Existen varias envolturas de Kotlin que simplifican el trabajo con POI. Una de las populares es kotlin-poi (com.github.doyaaaaaken:kotlinpoi). Añade funciones de extensión y un estilo DSL para crear archivos Excel.

Agregar dependencia:

repositories {    mavenCentral()}

dependencies { implementation("com.github.doyaaaaaken:kotlinpoi:1.0.0")}


Ejemplo 1: Creación de un archivo XLSX simple (POI puro)

Crearemos un libro con una hoja y lo llenaremos con datos:

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

fun createSimpleExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Datos") // Creamos los encabezados val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("Nombre") headerRow.createCell(1).setCellValue("Edad") headerRow.createCell(2).setCellValue("Ciudad") // Llenamos los datos val data = listOf( listOf("Ana", 28, "Moscú"), listOf("Iván", 35, "San Petersburgo"), listOf("María", 22, "Kazán") ) data.forEachIndexed { index, rowData -> val row = sheet.createRow(index + 1) rowData.forEachIndexed { cellIndex, value -> when (value) { is String -> row.createCell(cellIndex).setCellValue(value) is Int -> row.createCell(cellIndex).setCellValue(value.toDouble()) else -> row.createCell(cellIndex).setCellValue(value.toString()) } } } // Autoajuste del ancho de las columnas for (i in 0..2) { sheet.autoSizeColumn(i) } // Guardamos el archivo FileOutputStream("output.xlsx").use { fileOut -> workbook.write(fileOut) } workbook.close() println("Archivo creado: output.xlsx")}


Ejemplo 2: Lectura de un archivo Excel (POI puro)

import org.apache.poi.ss.usermodel.WorkbookFactoryimport java.io.FileInputStream

fun readExcel(filePath: String) { val file = FileInputStream(filePath) val workbook = WorkbookFactory.create(file) val sheet = workbook.getSheetAt(0) println("Leyendo hoja: ${sheet.sheetName}") println("Total de filas: ${sheet.physicalNumberOfRows}") for (row in sheet) { val r

Recommendations