Datum in Excel auslesen

chrissy

Bekanntes Mitglied
Hallo,

ich möchte gern aus Excel ein Datum auslesen. Für den Zugriff auf das Excel-Sheet nutze ich Apache POI. Das Datum würde ich gerne in ein Joda-Time LocalDate Element schreiben.
Mit
Java:
cell.getDateCellValue();
kann man ja schon vorher festlegen, daß man ein Datum ausliest. Aber diese Funktion erwartet Date. Wie kann ich das nun in ein LocalDate umwandeln?
Ich hab schon es schon so versucht
Java:
double test = cell.getNumericCellValue();
long test1 = Double.doubleToLongBits(test);
DateTime datum = new DateTime(test1);
aber dann kommen total unsinnige Daten heraus.

Danke für eure Hilfe
chrissy
 

chrissy

Bekanntes Mitglied
@Slater: Ich hab mir das mal durchgelesen, weiß leider aber nichts damit anzufangen ... irgendwie steh ich da auf dem Schlauch. Vielleicht könnteste mir noch nen Tipp geben.

Danke
 
S

SlaterB

Gast
hmm, kann ich machen, aber dann nur mit dem Hinweis, dass das ziemlich dämlich ist,
sorry schonmal fürs weitere

also:
double test = cell.getNumericCellValue();
liefert Werte wie 40379, hast du bestimmt noch gar nicht angeschaut

da sagt sich jeder (wenn man sich denn die Mühe macht ;) ): hmm, was ist denn das?
-> im anderen Thema oder allgemein bei google sind lang und breit diverse Erklärungen zu finden, dass das eine Tageszählung ist,
40380 ist ein Tag später als 40379

wäre übrigens auch mit einem simplen Test selber herauszufinden, einfach 2, 3, 10 Dati in ein Excel eintragen und schauen was bei POI raus kommt,
andersrum neue Zahlen wie 40444 eintragen und wieder prüfen, was dann im erzeugten Excel steht

soweit schon nicht schwer, nun nur noch zwischen Datum und Zahl hin- und herrechnen, per Dreisatz wenn man ein richtiges Wertepaar kennt,
-> 40379 ist 1.1.2088? na dann ist 40999 rund 600 Tage später, das kann man ausrechnen, z.B. mit Calendar.add(),
in meinem Code im anderen Thread ist das für java-util-Date/ Calendar schon fertig, dann müsstest du nur noch nach Joda-Time umrechnen oder ähnliches bauen

--

so, war da wirklich irgendein schwerer Schritt dabei?
 

chrissy

Bekanntes Mitglied
Hi SlaterB,

danke für den Hinweis, das Excel solche WErte liefert ist mir schon klar, hab ich mir auch angeschaut. War net schwer, aber meine Frage war ja eigentlich wie ich dann das Date oder den double ins Joda-Time bekomme ...
Hab aber mal noch weiter geschaut und so ne tolle Funktion gefunden : LocalDate.fromDateFields(Date date) und damit war's dann auch getan.

Danke für die Hilfe
chrissy
 

gigaplanet

Mitglied
Hi SlaterB,

danke für den Hinweis, das Excel solche WErte liefert ist mir schon klar, hab ich mir auch angeschaut. War net schwer, aber meine Frage war ja eigentlich wie ich dann das Date oder den double ins Joda-Time bekomme ...
Hab aber mal noch weiter geschaut und so ne tolle Funktion gefunden : LocalDate.fromDateFields(Date date) und damit war's dann auch getan.

Danke für die Hilfe
chrissy

Hi kannst du mal bitte den Code davon posten? Ich versuche das auch gerade aber komm nicht wirklich weiter...THX
 
S

SlaterB

Gast
nicht einfach wie gesagt wurde
public static LocalDate fromDateFields(Date date)

Constructs a LocalDate from a java.util.Date using exactly the same field values.
?
das betrifft natürlich nur den Weg Date -> LocalDate, gehts vorher um Excel -> Date?
 

gigaplanet

Mitglied
Also ich muss mit einem Datumswert aus einem Excelsheet rechnen.

Zum Beispiel 10 Jahre dazu addieren oder 50 Wochen.
Auslesen kein Problem, das rechnen auch kein Problem so wie in anderen Threads schon beschrieben war, jedoch hab ich Probleme das Datum so in ein Excelblatt zuschreiben das es in Excel auch wie ein Datum ausschaut. und natürlich auch richtig ist.
 
S

SlaterB

Gast
hmm, 'zurück in Excel' ist in diesem Thema doch überhaupt kein Thema..

ich rechne einen double aus dem Java-Date raus und setze das als double-Wert,
falls das Excel vorher schon ein Date-Feld enthielt,

in komplett neuen Arbeitsblättern formatiere ich Dates als String, z.B. dd.MM.yyyy und setzte den String-Wert, das erkennt Excel dann,
aber nun genug von mir falls ich nur störe ;)
 

gigaplanet

Mitglied
Sorry war mein Fehler;)

Ja die Idee hatte ich auch und es sieht so bei mir aus

[Java]
datum=(long) cell1.getNumericCellValue();
System.out.println(datum); //Ausgabe 40472

datum=datum+365;
System.out.println(datum); //Ausgabe 40838

SimpleDateFormat newFormat = new SimpleDateFormat("dd.MM.yyyy");
String newDateString = newFormat.format(datum);
System.out.println(newDateString); //Hier kommt das Datum als 01.01.1970 an??[/code]

Der Ansatz ist doch der den du meintest oder?
 
S

SlaterB

Gast
naja, entfernt..
zuerst musst du aus Excel das Datum auslesen, also doch wieder richtig hier,

'kein Problem' hast du zwar geschrieben, der Code spricht aber eine andere Sprache,
ein Excel-Datum auszulesen ist mehr als simples
> datum=(long) cell1.getNumericCellValue();

darum gehts doch hier über diverse Postings, viel Code usw., siehe verlinkten Thread mit meiner Methode
> public static Date getDateForExcelTime(int dateExcel, GregorianCalendar calendar)
usw.

wobei ich zwischendurch auch glaube, irgendwo in der HSSF-API eine passende Methode gefunden zu haben, die das macht,
was bringt eigentlich HSSFCell.getDateCellValue()?
na jedenfalls musst du ein ordentliches Date erstellen, 40472 ist ein Wert in Tagen seit irgendwann, der umgerechet werden muss,
40472 als Java-Millisekunden interpretiert wäre in der Tat gerade mal 40 sec nach dem Java-Anfang 1.1.1970

------

wenn du erstmal ein Date hast, dann mit GregorianCalendar Tage oder ähnliches draufrechnen,
direkt in Millisekunden ist aufwendig, Sommer/Winterzeit, unterschiedlich lange Monate, Schaltjahre?
dann schon eher Jodatime ;)
 
Zuletzt bearbeitet von einem Moderator:

gigaplanet

Mitglied
Deine Methode hab ich mir angeschaut aber ich muss leider gestehen das ich nur Bahnhof verstehe (ich lern erst seit 3 Wochen JAVA sorry;) )

Ne Spaß bei Seite also ich soll den Datumswert aus der Exceldatei nicht als long auslesen sondern als Date okay klingt logisch.

Jedoch theoretische Frage...

Nun weiß ich auch endlich das Java das Datum welches aus des Excelsheet liest in Millisekunden interpretiert okay dann brauch ich das doch eigentlich nur umrechen mit nen paar Multiplikationen oder?
 
S

SlaterB

Gast
denkbar ist das, wie schon geschrieben mögliche Probleme: Sommer/Winterzeit, unterschiedlich lange Monate, Schaltjahre
 

gigaplanet

Mitglied
Hmm das ist ja doof...naja ich experimentiere dann mal etwas;)

auf jeden Fall danke für die Antworten und Zeit;)

EDIT: Warum so schwer wenns auch einfach geht:

Java:
datum=DateUtil.getJavaDate(cell1.getNumericCellValue());
		datum.setYear(datum.getYear()+1);
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
G Datum letzte 7 tage Allgemeine Java-Themen 6
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
E Datei anhand Datum identifizieren Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
M Datum umwandeln. Allgemeine Java-Themen 1
P Datum im gewünschten Bereich Allgemeine Java-Themen 21
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M datei aufruf datum auslesen Allgemeine Java-Themen 5
T auf Valides Datum prüfen Allgemeine Java-Themen 12
E Datum in Kw umrechen Allgemeine Java-Themen 3
E Datum in String Allgemeine Java-Themen 4
K Datum+Uhrzeit in Millisekunden (long) umwandeln Allgemeine Java-Themen 7
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
F Tests mit dynamischem Datum Allgemeine Java-Themen 2
K Datum ermitteln Allgemeine Java-Themen 4
N Datum auf 00:00:00 Uhr normalisieren Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
S Datum vergleichen - ohne Hilfsmittel Allgemeine Java-Themen 8
T Aktuelles Datum auslesen Allgemeine Java-Themen 2
T Datum um ein Tag reduzieren Allgemeine Java-Themen 6
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
J Funktion zu einer Uhrzeit/datum ausführen Allgemeine Java-Themen 4
M Datum/Uhrzeit in ein Textfeld schreiben Allgemeine Java-Themen 28
L Gregorian Calender falsches Datum Allgemeine Java-Themen 2
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
J Datum und Zeit Allgemeine Java-Themen 4
B Jfree Chart mit Datum und Uhrzeit Allgemeine Java-Themen 6
B Datum jetzt vor einer Woche Allgemeine Java-Themen 5
B warum zählt der Kalender das Datum nicht weiter Allgemeine Java-Themen 2
V Datum vergleichen Allgemeine Java-Themen 7
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
C Datum zurücksetzen Allgemeine Java-Themen 9
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
G File.listFiles nach Datum sortiert ausgeben Allgemeine Java-Themen 1
A Datum parsen Allgemeine Java-Themen 9
G Datum vergleichen Allgemeine Java-Themen 5
C Datum addieren Allgemeine Java-Themen 2
G Timestamp aus Datum Allgemeine Java-Themen 4
B Herausfinden ob Datum existiert Allgemeine Java-Themen 2
H2SO3- string mithilfe von .matches als datum identifizieren Allgemeine Java-Themen 4
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
G Datum um 1 Monat verschoben Allgemeine Java-Themen 3
J Umwandeln von einem String in ein Datum Allgemeine Java-Themen 8
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
D Email versand bei einem festgelegten Datum Allgemeine Java-Themen 11
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
D Datum korrekt erkennen Allgemeine Java-Themen 27
M Datum einlesen aus jTextField Allgemeine Java-Themen 2
M Zukünftiges Datum Allgemeine Java-Themen 3
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
G JDK 1.5 und das Datum Allgemeine Java-Themen 7
V Datum parsen Allgemeine Java-Themen 6
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
M Datei Handling mit Datum Allgemeine Java-Themen 2
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
S Datum einer Datei online? Allgemeine Java-Themen 6
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
G Datum im Format yyyy-mm-dd erstellen Allgemeine Java-Themen 1
P Datum in einer DateComboBox setzen Allgemeine Java-Themen 7
MQue Datum in ComboBox setzen Allgemeine Java-Themen 9
J [Aenderungszeit Datei] nur Datum vergleichen Allgemeine Java-Themen 3
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
M Datum nicht richtig geprüft, warum? Allgemeine Java-Themen 9
L datum nach dem kopiervorgang neu setzen? Allgemeine Java-Themen 2
R Datum in *.txt suchen und ersetzen Allgemeine Java-Themen 2
H Ein zufälliges Datum innerhalb eines Intervalles erzeugen Allgemeine Java-Themen 3
S POI Datum Allgemeine Java-Themen 2
G Datum einer Datei Allgemeine Java-Themen 8
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
TheJavaKid Datum -> long Allgemeine Java-Themen 9
M Führende Null in einem Datum Allgemeine Java-Themen 3
C Datum-/Zeitdifferenz Allgemeine Java-Themen 5
F Datum gültig ? Allgemeine Java-Themen 9
G Datum konvertieren Allgemeine Java-Themen 14
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
F Datum in GregorianCalendar Allgemeine Java-Themen 3
G Datum Allgemeine Java-Themen 4
T Datum testen und Einsetzten Allgemeine Java-Themen 5
K Datum in ein anderes Format bringen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben