Hilft dir eventuell die Funktion "getType()" weiter? Die liefert dir nen integer, der den Datentyp widerspiegeln soll (wie z.B. Type.GetType("System.String")) nur in deinem Fall eben ((Excel.Range).getType() == x)?
Gruß Patrick > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Mansur > Esmann [OM] > Sent: Donnerstag, 9. Februar 2006 09:43 > To: csharp.net@glengamoi.com > Subject: RE: [CSharp.net] Unter c# auf Excel-Range zugreifen > > 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 > _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net