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-ooxmlest nécessaire pour travailler avec le format .xlsx (Office Open XML), tandis quepoiest 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, utilisezHSSFWorkbook.- Les lignes et les cellules sont indexées à partir de 0.
autoSizeColumnajuste automatiquement la largeur des colonnes en fonction du contenu.- En Kotlin, il est pratique d'utiliser
usepour 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
Aussi dans la bibliothèque
GraphQL pour Swift : Apollo iOS — client pour iOS et macOS
Multer pour JavaScript (Node.js) : guide complet avec exemples
Surveillance des applications Kotlin : bibliothèque Ktor Metrics et Micrometer
Valgrind pour C++ : guide complet avec exemples
OpenCV C++ : guide complet avec exemples et tutoriel