Ich verwende Apache POI seit einiger Zeit, um vorhandene Excel 2003-Dateien programmgesteuert zu lesen. Jetzt habe ich eine neue Anforderung, ganze XLS-Dateien im Speicher zu erstellen (immer noch mit Apache POI) und sie am Ende in eine Datei zu schreiben. Das einzige Problem, das mir im Weg steht, ist der Umgang mit Zellen mit Datumsangaben.
Betrachten Sie den folgenden Code:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Wenn ich die Arbeitsmappe mit dieser Zelle in eine Datei schreibe und sie mit Excel öffne, wird die Zelle als Zahl angezeigt. Ja, mir ist klar, dass Excel seine "Daten" als Anzahl der Tage seit dem 1. Januar 1900 speichert und genau diese Zahl in der Zelle darstellt.
FRAGE: Welche API-Aufrufe kann ich in POI verwenden, um anzugeben, dass ein Standard-Datumsformat auf meine Datumszelle angewendet werden soll?
Idealerweise soll die Tabellenkalkulationszelle mit demselben Standard-Datumsformat angezeigt werden, das Excel zugewiesen hätte, wenn ein Benutzer die Tabelle manuell in Excel geöffnet und einen Zellenwert eingegeben hätte, den Excel als Datum erkannt hat.
BuiltinFormats
, die alle Standardformate (nicht nur Datumsformate) auflistet, die Excel kennt. Ich halte mich an eine davon, die ich als Parameter für diegetFormat()
im obigen Snippet gezeigte Methode verwenden möchte.