3

我一直在使用 excel 电子表格,到目前为止,我从来没有遇到过任何问题。但是,当我尝试读取 excel 文件时,这个错误“不是合法的 OleAut 日期。”突然出现了。有谁知道我该如何解决这个问题。这是我用来读取 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

5 回答 5

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 数据最后一行之后的空白区域没有被读取为值。

于 2012-10-11T15:17:04.633 回答
0

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

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

于 2021-07-22T17:53:49.937 回答
0

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

于 2019-08-28T08:07:14.397 回答
0

寻找不同的日期格式,在我的例子中,一列是 dd/mm/yyyy 格式,另一列是 mm/dd/yyyy。一旦日期格式得到纠正,数据导入工作。

于 2017-09-21T13:03:22.957 回答
0

你怎么能解决这个问题?嗨!在第 1 行使用虚拟行劫持您的数据,并将有问题的列强制转换为字符串(仅在这种情况下 - 它是数据类型错误,因此请根据类型应用修复)。

有必要了解数据适配器的作用,它通过默认检查前 8 行数据(如果连接字符串中的 HDR=Yes,则无标题)并决定数据类型(它可以覆盖 - 是的,有一个覆盖 - 在连接字符串中到 16 行 - 几乎从来没有很有帮助)。

数据适配器可以做其他令人讨厌的事情,例如在混合数据类型的列中跳过字符串,例如 string/double(这实际上只是一个字符串列,但如果第一行都是双精度,则对适配器不适用)。在这个例子中,它甚至不会给你一个错误的礼貌。

这通常发生在来自包含“自由格式”列的 ERP 源的数据中。用户定义的列是通常的嫌疑人。在其他数据类型问题中可能很难找到。我曾经花费相当多的时间来解决一个列的问题,该列键入为最大长度为 255 个字符的字符串。在数据深处,有一些单元格超出了该长度并引发了错误。

如果您不想在使用数据适配器时提升到“基因工程”级别,解决此类问题的最快方法是劫持您的数据并强制相关列正确类型(或不正确,如果需要,您可以在自己的代码中更正)。计划 B 是将数据返回给客户/用户并告诉他们进行更正。祝 B 计划好运。它不是 A 计划是有原因的。

更多关于通过连接字符串进行操作以及适配器的类似问题 - 但要小心,结果不会 100% 万无一失。我已经广泛测试了更改 IMEX 和 HDR 设置。如果您想快速完成项目,请劫持数据。 OleDB 和混合 Excel 数据类型:缺少数据

这是另一个在上下文中类似的帖子,请注意所有可能的耗时解决方案。我还没有相信有更好的解决方案,它简直违背了程序员每天早上给键盘带来的逻辑。太糟糕了,你有工作要做,有时你必须成为一个黑客。 从 Excel 工作表导入时的日期时间格式不匹配

于 2021-11-05T14:32:20.300 回答