C# OleDbAdapters不会从单个excel列中读取不同格式的日期
我正在应用程序中读取excel文件。我使用OleDbDataAdapter读取.xlsx文件中的记录,并使用DataTable存储记录。我无法从单个列中读取不同的日期格式。我的专栏是这样的: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
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端处理它们