C# OleDbAdapters不会从单个excel列中读取不同格式的日期

C# OleDbAdapters不会从单个excel列中读取不同格式的日期,c#,excel,date-formatting,oledbdataadapter,C#,Excel,Date Formatting,Oledbdataadapter,我正在应用程序中读取excel文件。我使用OleDbDataAdapter读取.xlsx文件中的记录,并使用DataTable存储记录。我无法从单个列中读取不同的日期格式。我的专栏是这样的: 2014-02-07 2014-02-05 27.01.2014 19.11.2013 2014-02-07 2014-02-07 我的程序只加载yyyy-MM-dd格式的日期,其余日期为DBNull.Value。有没有办法将整个列读取为字符串,这样我就可以手动操作它们,或者强制OleD

我正在应用程序中读取excel文件。我使用OleDbDataAdapter读取.xlsx文件中的记录,并使用DataTable存储记录。我无法从单个列中读取不同的日期格式。我的专栏是这样的:

 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));
            }
         }

OleDb根据第一行的内容(如果标题可用)计算列数据类型,即标题后的一行,并将其应用于其余行

所以我建议将列的数据格式改为文本,而不是日期/时间,然后在C端处理它们