2009-04-21 20 views
3

Ich habe derzeit ein Excel-Blatt mit einer der Spalten im Datumsformat.Excel Datum Field Conversion Problem

Was ich sehe, wenn ich die Tabelle öffnen, ist so etwas wie 12/29/09 und das Programm sieht 40176.

Ich fand heraus, das ist der Wert vorhanden ist, wenn ich die Spalte zu allgemeinen Text zu ändern.

Meine Frage ist Wie kann ich den Wert 12/29/09 anstelle von 40176 lesen oder wie kann ich 40176 in ein gültiges Datum ändern?

Mein Programm ist in C# Müssen in C#


Hier Code meiner Verbindung ist Probe gelesen werden, wenn es irgendwelche hilft.

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
string myPath = @"C:\Test.xls"; 
excelApp.Workbooks.Open(myPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0); 

Microsoft.Office.Interop.Excel.Sheets sheets = excelApp.Worksheets; 
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1); 
excelApp.Visible = true; 

if(((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2 != null) 
    DateString = ((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2.ToString(); 
+1

Wie werden Sie öffnen und die Tabelle zu lesen? Interop? –

Antwort

12

können Sie DateTime.FromOADate() verwenden, um die Doppel in einen Datetime-Wert zu konvertieren.

+1

Cory und ich schulden dir beide ein Bier :) –

2

Wie Reed Copsey sagte, die DateTime.FromOADate() Methode wird den Wert in eine DateTime konvertieren. Wenn Sie jedoch den 29.12.09 als String haben möchten und ihn nicht weiter bearbeiten möchten, können Sie stattdessen cell.Text verwenden.

+0

Ja, 4 Jahre später ... Und du hast noch meinen Tag gemacht! : D Dies sollte die Antwort sein. Leute sollten in diesem Fall NICHT "FromOADate()" verwenden.U kann es bei Bedarf jederzeit auf eine Datetime umwandeln ... –

1

Verwenden Sie die Excel TEXT(val,format) Funktion.

Beispiel:

in der Zelle A2 eingeben =today() und Sie erhalten eine Zahl wie 40.189 , wenn man in der Zelle eingeben A2

Wenn Sie =TEXT(today(),"mm/dd/yyyy") geben Sie heutiges Datum formatiert als Text und es werden erhalten wird wie "01/30/2012"

0

können Sie die Text Funktion verwenden.

Syntax

Text(Value,FormatText) 

Beispiel

1) I, die 40176 in einem Excel-A2 2 gesetzt) ​​dann refrence ich es in der folgenden Formel

=TEXT(A2,"mm/dd/yy") 

on A3

Dann kommt der Wert 29.12.09. so wie du gerade

fragte

Vorsicht:

Wenn Sie Apostroph statt doppelte Anführungszeichen setzen könnte es nicht funktionieren