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: [email protected]
> 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: [email protected]
> > 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: [email protected]
> > > 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:
> > > [email protected]
> > > An-/Abmeldung und Suchfunktion unter:
> > > http://www.glengamoi.com/mailman/listinfo/csharp.net
> >
> >
> > _______________________________________________
> > CSharp.net Mailingliste, Postings senden an:
> > [email protected]
> > An-/Abmeldung und Suchfunktion unter:
> > http://www.glengamoi.com/mailman/listinfo/csharp.net
> >
>
> _______________________________________________
> CSharp.net Mailingliste, Postings senden an:
> [email protected]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/csharp.net
>
_______________________________________________
CSharp.net Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/csharp.net