几天前,我问了一个问题,但找不到足够的答案。我对问题进行了更多分析,并决定创建一个新线程。如果我不应该这样做,请告诉我或关闭问题。
我有一个OPEN excel 文件,其中包含日期格式的列,其中包含一些值,例如 2006 年 6 月 22 日、2006 年 6 月 22 日。我正在尝试使用 OleDbDataReader 读取 excel。代码是这样的:
string sql = string.Format("SELECT * FROM [{0}]", excelSheetName);
internal OleDbCommand command = new OleDbCommand();
command.CommandText = sql;
OleDbDataReader oleRdr = command.ExecuteReader();
DataTable dataTable = new DataTable();
datatable.TableName = excelSheetName;
dataTable.Load(oleRdr);
我将连接字符串用作:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\ExcelData\sample.xls;Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
问题是我无法以正确的 ( DateTime
) 格式读取日期值。我相信一切都被视为数字格式。所以我的结果是
6/22/2006 as 38890
在互联网上阅读了一些文章后,我了解到我的专栏有多种数据类型,然后我将连接字符串更改为:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\ExcelData\sample.xls;Extended Properties="Excel 8.0;HDR=No;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0"";
但我仍然无法以正确的格式阅读 excel。对此有任何建议。在我看来这是一个奇怪的问题。如果我需要提供更多信息,请告诉我。
注意:还要注意,当我的 excel 文件关闭时,两个连接字符串都会给我正确的数据。.xlsx
同样对于我们正在使用的新文档格式Microsoft.ACE.OLEDB.12.0
。
编辑
我也尝试编辑注册表....但没有缓解。但是当我更改值IMEX = 0
或者IMEX = 1
它再次正常工作时。任何人都可以准确地说出发生了什么吗?
编辑 2
当我改变时,HDR=Yes
一切都很好。请问有什么帮助吗?我在互联网上找不到足够的帮助。