Datum aus Excel auslesen mit C#

Hallo zusammen,

Ich habe ein kleines Problem beim fernsteuern von Excel 2003 aus Visual C# 2008. Ich schreibe gerade ein Programm für meine Firma indem ich verschiedene Maschienendaten (z.B. Stückzahl) aus einer SPS auslese und in einer Excel Datei speichere. Mein Problem ist, wie kann ich aus einer Excel Zelle einen Datumswert so auslesen, das ich ihm mit „DateTimeOffset.Now“ vergleichen kann. Hintergrund der ganzen geschichte ist, das ich zyklisch die Werte in die Tabelle schreibe. Dabei soll kontrolliert werden ob schon ein Datensatz mit dem aktuellen Datum generiert wurde. Wenn nicht dann wird der Datensatz erstellt. Das funktioniert bestens. Was bisher nicht funktioniert Datum auslesen und mit aktuellen Datum vergleichen. Wandele ich die Variable mit „.ToString()“ um erscheint ein Wert wie z.B. 40107 für den 21.10.2009. Ausserdem lässt das mit "if (DateTimeOffset.Now > Datum) (Datum ist die Variable) nicht vergleichen. Fehlermedung „Der Operator „>=“ kann nicht auf Operanden vom Typ „System.DateTimeOffset“ und „string“ angewendet werden.“

Hier noch der Codeabschnitt:

//Aktuelles Datum mit letzten Eintrag vergleichen. Wenn Gleich, dann keine Zellen anhängen.

range = worksheet.get_Range((„D“ + (row - 1)), („D“ + (row - 1)));
object datum = range.Value2;
//Datum vergleichen
if (DateTimeOffset.Now >= datum.ToString())
{
textBox1.Text = („Aktuelles Datum ist höher als eingetragenes.“);
}
else
{
textBox1.Text = („Aktuelles Datum ist gleich oder kleiner als eingetrgenes.“);
}

Habe schon einiges Ver- und gesucht aber nichts passendes gefunden. Hoffe ihr könnt mier weiter helfen.

Vielen Dank für eure Mühen im Voraus!

PS: Sollte ich das falsche Brett gewählt haben bitte ich um Verzeihung ist mein erster Beitrag hier.

Hallo zusammen

Habe eben die Lösung zu meinen Problem gefunden. Habe die Zellen von Datum (mit Datum) nach Text formatiert und siehe da in der Zelle steht statt 20.10.2009 -> 40107. Der Wert 40107 ist übrigens nicht auf ein Datum bezogen (ist z.B. bei 31.12.2013 gleich) sonder bezieht sich wahrscheinlich auf die Formatierungsart der Zelle. Habe Programm auf Format Text geändert und schreibe Datum als Text. Jetzt steht beim Auslesen auch der Datumswert als String zur Verfügung. Übrings kann in Excel die Formatierung geändert werden der Wert bleibt gleich.

Vielen Dank an alle die sich vieleicht schon Gedanken über mein Problem gemacht haben!!

Gruß Thomas

Hallo,

Vielen Dank an alle die sich vieleicht schon Gedanken über
mein Problem gemacht haben!!

Wenn Du das Tatum aber als Text speicherst, wirst Du (wenn nötig) Probleme dabei bekommen, wenn Du nach Datum sortieren möchtest.

Da ist dann der „01.12.2009“ vor dem „14.03.2009“.

Evtl. ist auch „System.DateTime“ (http://msdn.microsoft.com/de-de/library/system.datet…) interessant.

Grüße

Ja, die Datums sind so eine sache mit Excel. Gewühne dich schon mal an das amerrikanische Datumformat „#01/23/2009#“, dann bist Du schon mal nicht schlecht drauf. Beachte vorallem den „#“, an sonsten gibt es theater. Dann, die eingelesene Zelle as Date umwandeln. Jetzt hat man aber dasd Problem, dass das Jahre exakt 360 Tage hat und somit alles verschoben wird ein AQbweichfehler entsteht.
Genauer wäre dann die beiden Datums in eine Double Variable umzuwandeln, dann die Differenz nehmen und die Double Variable über eine Variant Variable in ein Datumvormat umzuwandeln. Dann sollte es irgendwie gehen.

Grüsse Sebastian