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

本文关键字:日期 ole 连接 db excel 读取 帮助 | 更新日期: 2023-09-27 18:03:28

我使用以下代码通过ole db连接将一个简单的excel电子表格导入数据集。当从电子表格中读取日期时,我看到不同的行为,这取决于电子表格是否被另一个进程打开。

这种行为很容易被重现。创建一个xlsx文件,其中包含一个头行和一行带有日期字段的数据。1/1/2011试试。保持电子表格打开状态,运行以下代码并检查xml输出。您将在1/1/2011的位置看到值40544,如果您关闭电子表格并运行相同的代码,您将在xml输出中实际看到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");

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

创建一个带有标题行的xlsx文件

var connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};扩展属性="Excel 12.0;HDR=NO;IMEX=1;"

",文件名);

啊?:)

将HDR (header)更改为Yes,我想你会看到它解决了这个问题。