Travailler avec Excel en Kotlin : bibliothèques Apache POI et wrappers Kotlin

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Excel en Kotlin : Apache POI et bibliothèques wrappers



Kotlin, en tant que langage de programmation moderne pour la JVM, offre d'excellentes possibilités pour travailler avec des données tabulaires. Bien que l'écosystème Kotlin ne dispose pas de support natif pour le format .xlsx, vous pouvez utiliser des bibliothèques Java éprouvées, adaptées à la syntaxe Kotlin. Dans cet article, nous examinerons l'outil principal — Apache POI — et deux wrappers Kotlin populaires : poi-kotlin et kotlinpoi.



1. Apache POI — la base du travail avec Excel



Apache POI est une bibliothèque Java mature pour la lecture et l'écriture de fichiers aux formats Microsoft Office (OLE2 et OOXML). Pour travailler avec des fichiers .xlsx modernes, utilisez le sous-module poi-ooxml. Ajoutez la dépendance dans build.gradle.kts :



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


Lecture d'un fichier Excel en Kotlin

Exemple de lecture des données de la première feuille :

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()}


Création d'un fichier Excel

Créons un tableau simple avec des en-têtes :

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

fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Données")

// En-têtes val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("Nom") headerRow.createCell(1).setCellValue("Âge") headerRow.createCell(2).setCellValue("Ville")

// Données val data = listOf( listOf("Anna", 25, "Moscou"), listOf("Ivan", 30, "Saint-Pétersbourg"), 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. Bibliothèque poi-kotlin — wrapper Kotlin-first



poi-kotlin (version 0.3.0) est un wrapper léger autour d'Apache POI qui ajoute des fonctions d'extension et une syntaxe DSL, caractéristiques de Kotlin. Installation :



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


Exemple avec poi-kotlin

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

fun dslExample() { val workbook = workbook { sheet("Rapport") { row { cell("Produit") cell("Prix") cell("Quantité") } row { cell("Ordinateur portable") cell(1200.0) cell(5) } row { cell("Souris") cell(25.5) cell(10) } } } workbook.writeToFile("report.xlsx")}

Le code est devenu plus lisible, et les blocs imbriqués sheet { row { ... } } rappellent la construction de balisage HTML.



3. Bibliothèque kotlinpoi — approche fonctionnelle



kotlinpoi (ver

Recommendations