Nein leider nicht, da ein ToString() auf das "Value" zugreift, daß komischerweise bei range immer leer ist. Und das Value2-Property gibt zwar die Werte aber eben als 37987.
Ich mache es jetzt so: String colNumberFormat = ((Excel.Range)sheet.Cells[aRange.Row+1, aRange.Column+c-1]).NumberFormat.ToString(); Und dann eine fette IF: if(colNumberFormat.IndexOf("TT") != -1 || colNumberFormat.IndexOf("MM") != -1 || colNumberFormat.IndexOf("JJ") != -1 || colNumberFormat.IndexOf("TT") != -1 || colNumberFormat.IndexOf("T.") != -1 || colNumberFormat.IndexOf("M.") != -1 || colNumberFormat.IndexOf(".J") != -1 ) Und dann habe ich erfahren, daß es sich um die Anzahl an Tagen seit Beginn des Julian Kalenders handelt und habe folgenden Code dazu gefunden, der scheinbar passt: ExcelSerialDateToDMY(Convert.ToInt32(ar.GetValue(2,c)), out day, out month, out year); private void ExcelSerialDateToDMY(int nSerialDate, out int nDay, out int nMonth, out int nYear) { // Excel/Lotus 123 have a bug with 29-02-1900. 1900 is not a // leap year, but Excel/Lotus 123 think it is... if (nSerialDate == 60) { nDay = 29; nMonth = 2; nYear = 1900; return; } else if (nSerialDate < 60) { // Because of the 29-02-1900 bug, any serial date // under 60 is one off... Compensate. nSerialDate++; } // Modified Julian to DMY calculation with an addition of 2415019 int l = nSerialDate + 68569 + 2415019; int n = ( 4 * l ) / 146097; l = l - ( 146097 * n + 3 ) / 4; int i = ( 4000 * ( l + 1 ) ) / 1461001; l = l - ( 1461 * i ) / 4 + 31; int j = ( 80 * l ) / 2447; nDay = l - ( 2447 * j ) / 80; l = j / 11; nMonth = j + 2 - ( 12 * l ); nYear = 100 * ( n - 49 ) + i + l; } Leider ist halt die Prüfung der NumberFormat ein Pfusch, weil es ja sooo viele Datumsformate geben kann, ich aber noch keine Property gefunden habe, die mich darüber informieren könnte, daß es sich um ein Datumsformat handelt. Also optimal wäre anstelle des NumberFormat sowas wie "IsDateFormat" oder so .... Wenn aber niemand eine bessere Property kennt, dann lebe ich einfach mit der Situation und hoffe das beste :-) Gruß Mansur > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Herbert Hahn > Sent: Wednesday, February 08, 2006 5:54 PM > To: csharp.net@glengamoi.com > Subject: AW: [CSharp.net] Unter c# auf Excel-Range zugreifen > > Gibts da keinen Cast so wie tostring(ThisApplication.Selection as > Excel.Range) > > > -----Ursprüngliche Nachricht----- > > Von: [EMAIL PROTECTED] [mailto:csharp.net- > > [EMAIL PROTECTED] Im Auftrag von Mansur Esmann [OM] > > Gesendet: Mittwoch, 08. Februar 2006 16:41 > > An: csharp.net@glengamoi.com > > Betreff: [CSharp.net] Unter c# auf Excel-Range zugreifen > > > > Hi, > > > > Excel.Range result = ThisApplication.Selection as Excel.Range; > > > > System.Array ar = result as System.Array; > > > > Leider erhalte ich für Zellen mit Datum kein "wirkliches" > Datum zurück ... > > Statdessen bekomme ich eine Zahl genauso, wie wenn ich in Excel das > > Datum zur Zahl wandle ... > > > > Hat mir jemand einen Vorschlag wie ich: > > A.) erkennen kann, daß es sich um ein Datum handelt und > > B.) wie ich ggf. die Zahl (Bspw. 01.01.2004 = 37987) wieder > zu einem > > Datum bekomme? > > > > Gruß Mansur > > > > _______________________________________________ > > CSharp.net Mailingliste, Postings senden an: > > CSharp.net@glengamoi.com > > An-/Abmeldung und Suchfunktion unter: > > http://www.glengamoi.com/mailman/listinfo/csharp.net > > > _______________________________________________ > CSharp.net Mailingliste, Postings senden an: > CSharp.net@glengamoi.com > An-/Abmeldung und Suchfunktion unter: > http://www.glengamoi.com/mailman/listinfo/csharp.net > _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net