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 : aperçu des bibliothèques et exemples pratiques



Kotlin, en tant que langage JVM moderne, possède une excellente compatibilité avec l'écosystème Java. Pour travailler avec les fichiers Excel (.xls et .xlsx), la solution la plus puissante et la plus répandue est la bibliothèque Apache POI. Elle permet de créer, lire et modifier des documents Microsoft Office. Dans cet article, nous verrons comment utiliser Apache POI en Kotlin, et nous découvrirons également des wrappers Kotlin spécialisés qui simplifient le code.



1. Ajout d'Apache POI à un projet Kotlin



Ajoutez les dépendances dans le fichier build.gradle.kts (pour Gradle Kotlin DSL) :



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


Pour Maven, utilisez les artefacts correspondants poi et poi-ooxml.



Important : poi-ooxml est nécessaire pour travailler avec le format .xlsx (Office Open XML), tandis que poi est pour l'ancien format .xls (HSSF).


2. Création et écriture d'un fichier Excel (XLSX) en Kotlin



Créons un classeur simple avec une feuille et écrivons des données.



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("Employés")

// En-têtes val headerRow = sheet.createRow(0) val headers = listOf("ID", "Nom", "Poste", "Salaire") headers.forEachIndexed { index, header -> headerRow.createCell(index).setCellValue(header) }

// Données val data = listOf( listOf(1, "Ivan Petrov", "Développeur", 120000.0), listOf(2, "Maria Smirnova", "Analyste", 95000.0), listOf(3, "Alexei Kuznetsov", "Testeur", 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) } } }

// Largeur automatique des colonnes for (i in headers.indices) { sheet.autoSizeColumn(i) }

// Sauvegarde FileOutputStream("employees.xlsx").use { stream -> workbook.write(stream) } println("Fichier créé : employees.xlsx")}


Points clés :

  • XSSFWorkbook — classe pour travailler avec .xlsx (XSSF). Pour .xls, utilisez HSSFWorkbook.
  • Les lignes et les cellules sont indexées à partir de 0.
  • autoSizeColumn ajuste automatiquement la largeur des colonnes en fonction du contenu.
  • En Kotlin, il est pratique d'utiliser use pour fermer automatiquement le flux.


3. Lecture d'un fichier Excel en Kotlin



Lisons le fichier créé précédemment et affichons les données dans la 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() } }}


Notez que la

Recommendations