帮助奇怪的行为通过ole db连接读取excel日期

时间:2011-07-22 19:23:47

标签: c# excel dataset

我正在使用以下代码通过ole db连接将简单的Excel电子表格导入数据集。从电子表格中读取日期时,我会看到不同的行为,具体取决于电子表格是否由其他进程打开。

可以轻松地重新生成行为。创建一个xlsx文件,其中包含标题行和一行带有日期字段的数据。请尝试2011年1月1日。保持电子表格打开并运行以下代码并检查xml输出。如果关闭电子表格并运行相同的代码,您将在xml输出中看到实际看到的1/1/2011,您将看到值为40544的1/1/2011。关于如何获得一致行为的任何想法或建议?

var fileName = @"C:\Test.xlsx";
var connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;""", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds);

ds.WriteXml(@"c:\test.xml");

1 个答案:

答案 0 :(得分:4)

创建带标题行的xlsx文件

检查。

var connectionString = String.Format(@&#34; Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties =&#34;&#34; Excel 12.0; < em> HDR = NO ; IMEX = 1;&#34;&#34;&#34;,fileName);

咦? :)

将HDR(标题)更改为是,我认为您会看到它解决问题。