Excel,OleDb和前导零

时间:2009-01-13 06:10:01

标签: .net excel oledb import

我有一个使用OleDb将数据从excel文件读取到DataSet的过程。一切都很顺利,直到我开始看到带有前导0的数据。文本格式为“常规”或“文本”。

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

有没有人知道如何解决这个问题?

修改

作为一些补充信息,我必须保持前导0,并将列格式化为常规。我也试过Text。

具有前导零的第一个条目位于第11行,并返回null。此特定工作表上的所有其他数据均为此列的数字。

3 个答案:

答案 0 :(得分:0)

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

查看其中一个Excel单元格,看看它顶部的数据输入条中是否有加载零;或者它有一个主要的撇号或一些这样的?

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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