0

我有一个使用 OleDb 将数据从 excel 文件读取到 DataSet 的过程。一切都运行良好,直到我开始看到其中包含前导 0 的数据。文本的格式为常规或文本。

我在 OleDb 连接中设置了 IMEX=1,但对于每个前导 0 的条目,我仍然在数据集中得到一个空值。

有谁知道解决这个问题的方法?

编辑

作为一些附加信息,我必须保留前导 0,并且该列的格式设置为 General。我也试过文本。

具有前导零的第一个条目位于第 11 行,并返回空值。此特定表上的所有其他数据都是此列的数字。

4

3 回答 3

0

我敢打赌,数据以文本形式存储在 Excel 电子表格中;因为它本身不会有前导零(尽管可以对单元格进行格式化以显示它们。)我希望 OleDb 会询问 Excel 什么数据类型,而 Excel 认为它们是字符串。

查看其中一个 Excel 单元格,看看它在顶部的数据输入条中是否有加载零;还是它有一个领先的撇号或类似的撇号?

如果是这种情况(或者即使不是,但您想要未格式化的数据),我想到的一种方法是将工作表复制到另一个工作表并使用 Val(address) 函数转换 Excel 列,并且在没有前导零的情况下重新格式化它;然后从中读取。

于 2009-01-13T06:16:31.387 回答
0

我能看到的最好的事情是,您必须创建一个预先格式化的 excel 文件,然后将其用于您需要的数据。

于 2009-01-13T07:38:48.287 回答
0

您的前 10 行是纯数字数据吗?

然后驱动程序正在判断整列是否为数字。当它遇到不适合的数据时,它会窒息。您可能将其视为 NULL 或 0。

我会尝试:
1)删除 IMEX - 不使用它进行实验
2)尝试在该列中的所有数据中添加一个单引号作为第一个字符。
这在 Excel 中“强制文本”。作为测试,只需在前 11 行上尝试一下。
这应该强制驱动程序将列视为文本。NULL 应该消失。

有一些方法可以增加行“样本大小”......但我不记得在连接字符串中使用的关键字。

于 2009-01-14T00:59:58.233 回答