Apache POI - getCellType()

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Apache POI ist ein Framework zum Verarbeiten von Microsoft Dateiformaten wie Word (*.doc, *.docx), Excel (*.xsl, *.xslx) und Powerpoint (*.ppt).

Apache POI bis Version 3.14

Zum Feststellen welchen Typs der Inhalt einer Zelle in einem Excel-Sheet ist, wurde bis Version 3.14 folgende oder eine ähnliche switch-Anweisung in den Code geschrieben:

Cell cell = ...
CellValue cellValue = evaluator.evaluate(cell);

switch (cellValue.getCellType()) {
   case Cell.CELL_TYPE_NUMERIC:
   System.out.println(cellValue.getNumberValue());   
   break;
 
   case Cell.CELL_TYPE_STRING:
   System.out.println(cellValue.getStringValue());
   break;
   
   case Cell.CELL_TYPE_BLANK:
   case Cell.CELL_TYPE_ERROR:
   case Cell.CELL_TYPE_FORMULA:
   System.out.println();
   break;

   default:
   System.out.println("Not supported");
   break;
}

Apache POI ab Version 3.15

In Version 3.15 hat sich einiges geändert, so dass nun im Interface Cell keine öffentlichen statischen finalen Variablen (Konstanten) mehr zu finden sind. Stattdessen wurden die Zelltypen gegen eine Aufzählung (enum) eingetauscht.

Der Code zum Feststellen des Inhaltstyps einer Zelle konnte nun die Methode getCellTypeEnum() für den Vergleich benutzen.

switch (cell.getCellTypeEnum()) {
   case STRING:
   System.out.println(cell.getRichStringCellValue().getString());
   break;
   
   case NUMERIC:
   if (DateUtil.isCellDateFormatted(cell)) {
      System.out.println(cell.getDateCellValue());
   } else {
      System.out.println(cell.getNumericCellValue());
   }
   break;

   case BOOLEAN:
   System.out.println(cell.getBooleanCellValue());
   break;

   case BLANK:
   case ERROR:
   case FORMULA:
   System.out.println();
   break;

   default:
   System.out.println("Not supported");
   break;
}

Apache POI ab Version 4.2

Die Methode getCellTypeEnum() ist als deprecated eingestuft und wird voraussichtlich in Version 4.2 entfernt werden.

Zukünfige Versionen einer Software, die Apache POI benutzt, sollten den Code entsprechen anpassen und getCellType() verwenden.

switch (cell.getCellType()) {
   case STRING:
   System.out.println(cell.getRichStringCellValue().getString());
   break;
   
   case NUMERIC:
   if (DateUtil.isCellDateFormatted(cell)) {
      System.out.println(cell.getDateCellValue());
   } else {
      System.out.println(cell.getNumericCellValue());
   }
   break;

   case BOOLEAN:
   System.out.println(cell.getBooleanCellValue());
   break;

   case BLANK:
   case ERROR:
   case FORMULA:
   System.out.println();
   break;

   default:
   System.out.println("Not supported");
   break;
}

Links


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.