2009-01-13 70 views
0

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

我在OLEDB连接设置IMEX = 1,但我仍然可以在数据集中用于解决此一个可行的领先0

有谁知道的方式每个条目为空值?

编辑

其位的附加信息,我必须保持领先的0和列的格式设置为通用。我也尝试过文字。

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

+0

Excel和前导零是一个巨大的灾难 – 2009-01-13 06:28:06

回答

0

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

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

如果ihis是这种情况(或者即使它不是,但你想要未格式化的数据),离开我头顶的一种方法是将工作表复制到另一个工作表并使用Val(地址)函数,并重新格式化而不引导零;然后从中读取。

+0

我不能删除前导零。数据显示0作为单元格中的第一个字符,没有撇号。 – 2009-01-13 15:29:24

+0

那么如何添加一列,将公式设置为Val(badcolumn)? – dkretz 2009-01-14 01:04:50

0

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

+0

该类型已被设置为该列的文本。除非我需要删除并重新粘贴数据。 – 2009-01-13 15:28:51

0

您的第一个10行纯数字数据?

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

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

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