Andreas Jaeger
2011-05-19 10:42:06 UTC
Ich versuche gerade, Excel-Dateien zu lesen und experimentiere mit POI.
Mein Code lautete ungefähr:
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));
XSSFSheet sheet = wb.getSheetAt(0);
for (int i = 0; i < sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j, Row.RETURN_BLANK_AS_NULL);
int type = cell.getCellType();
System.out.print("[" + type + "]");
if (type == 1) {
System.out.print(cell.getStringCellValue());
} else if (type == 0) {
System.out.print(cell.getNumericCellValue());
}
System.out.print(" *** ");
}
System.out.println();
}
1.
Wenn ich auf Zellen mit leerem Inhalt cell.getNumericCellValue()
aufrufe, kommt:
java.lang.IllegalStateException: Cannot get a numeric value from a text cell
Wenn ich auf den gleichen Zellen cell.getStringCellValue() aufrufe, kommt:
java.lang.IllegalStateException: Cannot get a text value from a numeric cell
Das empfinde ich als Beleidigung. Hat schon wer einen Umgang damit
gefunden, womöglich gar erfolgreich eine leere Zelle identifiziert, ohne
deren Wert auslesen zu müssen?
2.
Es gibt auch Datumsformatierungen in einigen meiner Zellen. Wie bekomme
ich heraus, wie der numerische Wert in einer Zelle zu interpretieren
ist? Es gibt keine Variante Cell.CELL_TYPE_DATE. Kommt man irgendwie an
die Formatierung der Zellen, wie sie über den Format->Cell-Dialog in
Excel selbst zu besichtigen ist?
3.
Gibt's womöglich eine andere Bibliothek, die ich benutzen könnte?
Grüße, Andreas
Mein Code lautete ungefähr:
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));
XSSFSheet sheet = wb.getSheetAt(0);
for (int i = 0; i < sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j, Row.RETURN_BLANK_AS_NULL);
int type = cell.getCellType();
System.out.print("[" + type + "]");
if (type == 1) {
System.out.print(cell.getStringCellValue());
} else if (type == 0) {
System.out.print(cell.getNumericCellValue());
}
System.out.print(" *** ");
}
System.out.println();
}
1.
Wenn ich auf Zellen mit leerem Inhalt cell.getNumericCellValue()
aufrufe, kommt:
java.lang.IllegalStateException: Cannot get a numeric value from a text cell
Wenn ich auf den gleichen Zellen cell.getStringCellValue() aufrufe, kommt:
java.lang.IllegalStateException: Cannot get a text value from a numeric cell
Das empfinde ich als Beleidigung. Hat schon wer einen Umgang damit
gefunden, womöglich gar erfolgreich eine leere Zelle identifiziert, ohne
deren Wert auslesen zu müssen?
2.
Es gibt auch Datumsformatierungen in einigen meiner Zellen. Wie bekomme
ich heraus, wie der numerische Wert in einer Zelle zu interpretieren
ist? Es gibt keine Variante Cell.CELL_TYPE_DATE. Kommt man irgendwie an
die Formatierung der Zellen, wie sie über den Format->Cell-Dialog in
Excel selbst zu besichtigen ist?
3.
Gibt's womöglich eine andere Bibliothek, die ich benutzen könnte?
Grüße, Andreas
--
Andreas Jaeger
MMF GmbH, Herdecke, Germany
Andreas Jaeger
MMF GmbH, Herdecke, Germany