Convertire un file Excel in JSON con Java 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 per leggere un file Excel e convertirlo in JSON.
Se usate Maven aggiungete queste dipendenze:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
</dependency>
Qui sotto un esempio funzionante che sto usando in produzione (con le dovute modifiche di miglioramento del codice) per un piccolo programmino:
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;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
String fileXls = "/home/utente/FORNITORI.xlsx";
try (InputStream inputStream = new FileInputStream(fileXls)) {
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0);
String[] headers = new String[sheet.getRow(0).getLastCellNum()];
JSONArray jsonArray = new JSONArray();
for (Row row : sheet) {
if (row.getRowNum() == 0) {
for (int i = 0; i < row.getLastCellNum(); i++) {
headers[i] = row.getCell(i).getStringCellValue();
}
} else {
JSONObject obj = new JSONObject();
for (int i = 0; i < row.getLastCellNum(); i++) {
Cell currentCell = row.getCell(i);
if (currentCell.getCellType() == CellType.STRING) {
obj.put(headers[i], currentCell.getStringCellValue());
} else if (currentCell.getCellType() == CellType.NUMERIC) {
obj.put(headers[i], currentCell.getNumericCellValue());
}
}
jsonArray.put(obj);
}
}
System.out.println(jsonArray);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Enjoy!
java maven apache poi excel office
Commentami!