2017-06-22 33 views
1

ファイルのインポートに問題があります。 .xlsファイルをSQL Serverにインポートしようとしています。しかし、それは日付形式です。 デバッグ後、私はテキスト形式の日付を読んでいることがわかりました。 私の日付はf.eg:'01 -01-2017 'ですが、デバッグ時に日付が表示されない場合は、代わりに日付のテキスト形式である「42736」が表示されます。 誰かがこれを解決する方法についていくつかのアイデアを助けることができますか?文字列が有効なDateTimeとして認識されませんでした。テキスト形式の日付

enter image description here

string strDate = table.Rows[i][2].ToString(); 
    DateTime date = Convert.ToDateTime(strDate.Replace(".", "-")); 


ImportToAP(Int32.Parse((table.Rows[i][26]).ToString()), date, Double.Parse((table.Rows[i][38]).ToString()), (table.Rows[i][33]).ToString(), Int32.Parse((table.Rows[1][4]).ToString())); 
+0

あなたがテーブルにExcelを変換するために使用しているどのようなコードは何ですか? –

+0

https://stackoverflow.com/q/727466/5779732 –

+1

の正確な複製[Excelシリアル日付番号を.NET DateTimeに変換するにはどうすればよいですか?](https://stackoverflow.com/questions/727466)/how-do-i-convert-an-excel-serial-date-number-to-a-net-datetime) –

答えて

3

使用DateTime.FromOADate

DateTime date = DateTime.FromOADate(table.Rows[i].Field<double>(2)); 

それが本当に文字列(私は疑う何)だ場合:

DateTime date = DateTime.FromOADate(double.Parse(table.Rows[i].Field<string>(2))); 
+0

答えに感謝します。これは文字列で、コードは役に立ちますが、文書の最後の行だけをデータベースにインポートします。 – Michelle

+0

@Michelle:本当に文字列か、 'ToString'を使用しただけなのですか?しかし、次の問題はこれに関連していません。したがって、別の質問をして関連するすべてのコードを挿入したいと思うかもしれません。 –

0

あなたはDateTime.FromOADate()メソッドを使用することができます。

strDateが、Double.TryParse()メソッドを使用して二重に解析できるかどうかを確認してください。その場合はDateTime.FromOADate((double)strdate)を使用し、それ以外の場合はデフォルトの方法を使用してください。

参考:

関連する問題