我有一个使用 OleDb 将数据从 excel 文件读取到 DataSet 的过程。一切都运行良好,直到我开始看到其中包含前导 0 的数据。文本的格式为常规或文本。
我在 OleDb 连接中设置了 IMEX=1,但对于每个前导 0 的条目,我仍然在数据集中得到一个空值。
有谁知道解决这个问题的方法?
编辑
作为一些附加信息,我必须保留前导 0,并且该列的格式设置为 General。我也试过文本。
具有前导零的第一个条目位于第 11 行,并返回空值。此特定表上的所有其他数据都是此列的数字。
我敢打赌,数据以文本形式存储在 Excel 电子表格中;因为它本身不会有前导零(尽管可以对单元格进行格式化以显示它们。)我希望 OleDb 会询问 Excel 什么数据类型,而 Excel 认为它们是字符串。
查看其中一个 Excel 单元格,看看它在顶部的数据输入条中是否有加载零;还是它有一个领先的撇号或类似的撇号?
如果是这种情况(或者即使不是,但您想要未格式化的数据),我想到的一种方法是将工作表复制到另一个工作表并使用 Val(address) 函数转换 Excel 列,并且在没有前导零的情况下重新格式化它;然后从中读取。
我能看到的最好的事情是,您必须创建一个预先格式化的 excel 文件,然后将其用于您需要的数据。
您的前 10 行是纯数字数据吗?
然后驱动程序正在判断整列是否为数字。当它遇到不适合的数据时,它会窒息。您可能将其视为 NULL 或 0。
我会尝试:
1)删除 IMEX - 不使用它进行实验
2)尝试在该列中的所有数据中添加一个单引号作为第一个字符。
这在 Excel 中“强制文本”。作为测试,只需在前 11 行上尝试一下。
这应该强制驱动程序将列视为文本。NULL 应该消失。
有一些方法可以增加行“样本大小”......但我不记得在连接字符串中使用的关键字。