Convertire un file Excel in JSON con Kotlin e Apache POI

Mattepuffo's logo
Convertire un file Excel in JSON con Kotlin e Apache POI

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!


Condividi

Commentami!