2009-04-21 10 views
3

現在、日付形式の列の1つを含むExcelシートがあります。私は、スプレッドシートを開くときに私が見る何Excel日付フィールド変換の問題

は12/29/09のようなものであり、プログラムは、私は一般的なテキストに列を変更するとき、私は、これは価値ある考え出し40176.

を見ています。

私の質問はです。どのように私は40176ではなくの値を読み取ることができますか、または40176を有効な日付に変更するにはどうすればよいですか?

私のプログラムはC#であるがここでは、C#で


を読み込みする必要があり、それがいずれかの場合に役立ちます私の接続のサンプルコードです。

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

どのようにスプレッドシートを開いて読んでいると動作しない可能性がありますか? Interop? –

答えて

12

DateTime.FromOADate()を使用すると、ダブルをDateTime値に変換できます。

+1

コーリーと私はあなたにビールを借りています:) –

2

Reed Copseyが述べたように、DateTime.FromOADate()メソッドは、値をDateTimeに変換します。ただし、12/29/09を文字列として使用し、それ以上操作したくない場合は、代わりにcell.Textを使用できます。

+0

4年後...そして、私はまだ私の一日を作った! :Dこれは答えになるはずです。この場合は、FromOADate()を使用しないでください。Uは必要なときにいつでもdatetimeにキャストできます... –

1

excel TEXT(val,format)機能を使用してください。

例:セルA2に

=today()を入力して、あなたがセルA2

に入る場合は、=TEXT(today(),"mm/dd/yyyy")を入力した場合は、今日の日付がテキストとそれとしてフォーマットますよ40189 のような番号を取得します"01/30/2012"

0

テキストのようになります。

私はエクセルA2 2)40176を入れ

1)構文

Text(Value,FormatText) 

例それからに

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

以下の式でそれをrefrence A3

値は12/29/09です。あなたは

注意尋ねただけのよう:

を使用すると、単一引用符の代わりに二重引用符を置く場合、それは