帮助奇怪的行为阅读Exceldate通过ole db连接

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

行为可以很容易地重新生成。 使用date字段创build一个包含标题行和一行数据的xlsx文件。 尝试2011年1月1日。 保持电子表格打开并运行以下代码并检查xml输出。 如果closures电子表格并运行相同的代码,则会在2011年1月1日的xml输出中看到2011年1月1日的值,您将看到值为40544的值。 任何想法或build议如何获得一致的行为?

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

使用标题行创build一个xlsx文件

检查。

var connectionString = String.Format(@“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties =”“Excel 12.0; HDR = NO ; IMEX = 1;”“”,fileName);

咦? 🙂

改变HDR(标题)为是,我想你会看到它解决了这个问题。