Convertire un file Excel in JSON con Kotlin e Apache POI
Di Apache POI ne abbiamo già parlato varie volte; si tratta di una libreria per Java che ci consente di manipolare i documenti di MS Office.
In questo articolo vediamo come usarla in Kotlin per leggere un file Excel e convertirlo in JSON.
Se usate gradle:
dependencies {
..........
implementation("org.json:json:20240303")
implementation("com.fasterxml.jackson.core:jackson-core:2.17.1")
implementation("org.apache.poi:poi-ooxml:5.2.5")
}
Qui sotto un codice di esempio:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.FileInputStream;
import java.io.IOException;
fun main() {
val fileXls = "/home/utente/FORNITORI.xlsx"
try {
FileInputStream(fileXls).use { inputStream ->
val workbook: Workbook = XSSFWorkbook(inputStream)
val sheet: Sheet = workbook.getSheetAt(0)
val headers = arrayOfNulls<String>(sheet.getRow(0).lastCellNum.toInt())
val jsonArray = JSONArray()
for (row in sheet) {
if (row.rowNum == 0) {
for (i in 0..<row.lastCellNum) {
headers[i] = row.getCell(i).stringCellValue
}
} else {
val obj = JSONObject()
for (i in 0..<row.lastCellNum) {
val currentCell: Cell = row.getCell(i)
if (currentCell.cellType === CellType.STRING) {
obj.put(headers[i], currentCell.stringCellValue)
} else if (currentCell.cellType === CellType.NUMERIC) {
obj.put(headers[i], currentCell.numericCellValue)
}
}
jsonArray.put(obj)
}
}
println(jsonArray)
}
} catch (e: IOException) {
println(e.message)
}
}
Enjoy!
kotlin gradle apache poi excel json
Commentami!