如何修复“不合法的OleAut日期”。在C#中读取Excel文件时?

时间:2012-09-26 15:59:47

标签: c# excel oledbdataadapter

我一直在使用excel电子表格,到目前为止我从来没有遇到任何问题..但是这个错误,“不是合法的OleAut日期。”,当我试图读取excel文件时,突然出现了。有谁知道如何解决这个问题。这是我用来读取excel并将数据放入数据集的代码。它之前运行良好但在我对数据源进行了一些更改(不涉及日期)之后出现了这个错误。

var fileName = string.Format("C:\\Drafts\\Excel 97-2003 formats\\All Data 09 26 2012_Edited.xls");
        var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

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

        DataSet Originalds = new DataSet();
        adapter.Fill(Originalds, "Employees"); // this is where the error shows up

4 个答案:

答案 0 :(得分:8)

我想出了解决这个问题的方法我将连接字符串更改为最新的oleDB提供程序。

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;'", fileName);

我还确保我的Excel数据的最后一行之后的空格不会被读取为值。

答案 1 :(得分:0)

查找不同的日期格式,在我的情况下,其中一列是dd / mm / yyyy格式,另一列是mm / dd / yyyy。一旦日期格式得到纠正,数据导入就会起作用。

答案 2 :(得分:0)

对于我来说,我在表中手动插入了一个错误格式的日期,它是01/01/0019而不是01/01/2019。

答案 3 :(得分:0)

我在 oledb 中阅读 excel 时遇到了这个问题。

我发现在 excel 中,许多日期列在开始记录中都是空的。我在 excel 中有 6000 条记录,其中一个 datecolumn 大约有前 4000 个空单元格,因此 excel 无法理解要转换单元格的内容,因此我添加了一个带有日期的虚拟记录填充并处理我的文件。或者,您可以在顶部移动一些具有日期值的记录