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