Hallo,
ich arbeite gerade daran eine Excel Datei zu XML zu konvertieren. Ich benutze dazu Jakarta HSSF POI. Im Großen und ganzen funktioniert das auch ziemlich gut ich habe nur ein Problem mit Cellen die ein Benutzerdefiniertes Zahlenformat haben.
Zum Beispiel habe ich eine Zelle mit diesem Inhalt: 06-03-2007 9:09 AM
In der Excel Datei ist das eine benutzerdefinierte Zahl. Wenn ich mit HSSF den CellType abfrage bekomme ich Numeric zurück. Somit kann ich aus der Celle die Daten nur mit cell.getNumericCellValue(); abfragen was mir ein double liefert und somit einen falschen Wert.
Diesen double Wert kann ich zwar mit sDateFormat.format(HSSFDateUtil.getJavaDate(d)); wieder in ein Datumsformat umwandeln wobei sDateFormat="dd-mm-yyyy h:mm a" ist allerdings stimmen die Werte nicht ganz. Zum Beispiel bekomme ich bei 06-03-2007 9:09 AM, 06-23-2007 9:09 AM zurück?! Der Monat ist einfach nie richtig, alles andere schon. Wieso auch immer?! Wenn das funktionieren würde wäre ich ja schon einen großen Schritt weiter allerdings gibt es noch drei weitere Problemformate.
In anderen Zellen stehen benutzerdefinierte Formate wie "00:08 h", "8,8 km" und "66,0 km/h". Da funkttioniert das mit den Datumsformatieren natürlich gar nicht. Ich habe aber noch keinen Weg gefunden wie ich das lösen könnte.
Am einfachsten wäre es wenn ich ohne berücksichtigungen der CellTypen einfach die Werte als einfachen String auslesen könnte das habe ich aber noch nicht hinbekommen.
Hat hier vielleicht jemand eine Idee wie ich das lösen könnte? Ich bin schon fast fertig damit lediglich diese blöden benutzerdefinierten formaten halten mich jetzt auf. Ein ändern der Excel Datei ist NICHT möglich.
Das Problem mit dem Datum habe ich inzwischen gelöst. Ich muss als Datumsformat "dd-MM-yyyy h:mm a" verwenden dann stimmt es. Jetzt hab ich nur noch das Problem mit der Darstellung bzw. formatierung von 00:8 h, "24,5 km" und 64,0 km/h ... Weiß dabei vielleicht jemand Rat? Das wäre wirklich großartig.
Ich hoffe ihr könnt mir weiterhelfen.
Vielen Dank.
Gruß und so
Loki2
ich arbeite gerade daran eine Excel Datei zu XML zu konvertieren. Ich benutze dazu Jakarta HSSF POI. Im Großen und ganzen funktioniert das auch ziemlich gut ich habe nur ein Problem mit Cellen die ein Benutzerdefiniertes Zahlenformat haben.
Zum Beispiel habe ich eine Zelle mit diesem Inhalt: 06-03-2007 9:09 AM
In der Excel Datei ist das eine benutzerdefinierte Zahl. Wenn ich mit HSSF den CellType abfrage bekomme ich Numeric zurück. Somit kann ich aus der Celle die Daten nur mit cell.getNumericCellValue(); abfragen was mir ein double liefert und somit einen falschen Wert.
Diesen double Wert kann ich zwar mit sDateFormat.format(HSSFDateUtil.getJavaDate(d)); wieder in ein Datumsformat umwandeln wobei sDateFormat="dd-mm-yyyy h:mm a" ist allerdings stimmen die Werte nicht ganz. Zum Beispiel bekomme ich bei 06-03-2007 9:09 AM, 06-23-2007 9:09 AM zurück?! Der Monat ist einfach nie richtig, alles andere schon. Wieso auch immer?! Wenn das funktionieren würde wäre ich ja schon einen großen Schritt weiter allerdings gibt es noch drei weitere Problemformate.
In anderen Zellen stehen benutzerdefinierte Formate wie "00:08 h", "8,8 km" und "66,0 km/h". Da funkttioniert das mit den Datumsformatieren natürlich gar nicht. Ich habe aber noch keinen Weg gefunden wie ich das lösen könnte.
Am einfachsten wäre es wenn ich ohne berücksichtigungen der CellTypen einfach die Werte als einfachen String auslesen könnte das habe ich aber noch nicht hinbekommen.
Hat hier vielleicht jemand eine Idee wie ich das lösen könnte? Ich bin schon fast fertig damit lediglich diese blöden benutzerdefinierten formaten halten mich jetzt auf. Ein ändern der Excel Datei ist NICHT möglich.
Das Problem mit dem Datum habe ich inzwischen gelöst. Ich muss als Datumsformat "dd-MM-yyyy h:mm a" verwenden dann stimmt es. Jetzt hab ich nur noch das Problem mit der Darstellung bzw. formatierung von 00:8 h, "24,5 km" und 64,0 km/h ... Weiß dabei vielleicht jemand Rat? Das wäre wirklich großartig.
Ich hoffe ihr könnt mir weiterhelfen.
Vielen Dank.
Gruß und so
Loki2
Zuletzt bearbeitet: