我正在使用以下代码通过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");
答案 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(标题)更改为是,我认为您会看到它解决问题。