Trabajo con Excel en Kotlin: bibliotecas Apache POI y envoltorios de 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: descripción general de bibliotecas y ejemplos prácticos



Kotlin, como lenguaje moderno de la JVM, tiene una excelente compatibilidad con el ecosistema Java. Para trabajar con archivos Excel (.xls y .xlsx), la solución más potente y extendida es la biblioteca Apache POI. Permite crear, leer y modificar documentos de Microsoft Office. En este artículo, veremos cómo usar Apache POI en Kotlin, y también conoceremos envoltorios especializados de Kotlin que simplifican el código.



1. Agregar Apache POI a un proyecto Kotlin



Agregue las dependencias en el archivo 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 los artefactos correspondientes poi y poi-ooxml.



Importante: poi-ooxml es necesario para trabajar con el formato .xlsx (Office Open XML), mientras que poi es para el antiguo .xls (HSSF).


2. Crear y escribir un archivo Excel (XLSX) en Kotlin



Creemos un libro simple con una hoja y escribamos datos.



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("Empleados")

// Encabezados val headerRow = sheet.createRow(0) val headers = listOf("ID", "Nombre", "Cargo", "Salario") headers.forEachIndexed { index, header -> headerRow.createCell(index).setCellValue(header) }

// Datos val data = listOf( listOf(1, "Iván Petrov", "Desarrollador", 120000.0), listOf(2, "María Smirnova", "Analista", 95000.0), listOf(3, "Alexéi Kuznetsov", "Probador", 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) } } }

// Autoajuste del ancho de las columnas for (i in headers.indices) { sheet.autoSizeColumn(i) }

// Guardar FileOutputStream("employees.xlsx").use { stream -> workbook.write(stream) } println("Archivo creado: employees.xlsx")}


Puntos clave:

  • XSSFWorkbook — clase para trabajar con .xlsx (XSSF). Para .xls use HSSFWorkbook.
  • Las filas y celdas se indexan desde 0.
  • autoSizeColumn ajusta automáticamente el ancho de las columnas al contenido.
  • En Kotlin es conveniente usar use para cerrar automáticamente el flujo.


3. Leer un archivo Excel en Kotlin



Leamos el archivo creado anteriormente y mostremos los datos en la consola.



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 la comprobación

Recommendations