2

アプリケーションで Excel ファイルを読み込んでいます。OleDbDataAdapter を使用して読み取り、DataTable を使用して .xlsx ファイルからレコードを保存します。単一の列から異なる日付形式を読み取る際に問題があります。私のコラムは次のようになります。

 2014-02-07 
 2014-02-05 
 27.01.2014 
 19.11.2013
 2014-02-07
 2014-02-07

私のプログラムは「yyyy-MM-dd」形式の日付のみをロードし、残りは DBNull.Value です。列全体を文字列として読み取る方法はありますか (手動で操作できます)、または OleDbDataAdapter にすべての日付を強制的に読み取る方法はありますか?

それは私のコードです:

        var fileName = string.Format(@"C:\28.xlsx");
        var connectionstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0 xml;HDR=NO;IMEX=1'");

        var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$B12:L]", connectionstring);
        var ds = new DataSet();

        adapter.Fill(ds, "anyNameHere");
        System.Data.DataTable data = ds.Tables["anyNameHere"];

        foreach (DataRow row in data.Rows)
        {
            try
            {
                Console.WriteLine(row.Field<DateTime>(3).ToShortDateString());
            }
            catch
            {
                Console.WriteLine(row.Field<string>(3));
            }
         }
4

1 に答える 1