OleDbDataReader在单元格(.xlsx)中看不到数据



读取xlsx文件时遇到一个非常奇怪的问题(我使用的是OleDbDataReader)。

我有一个由以下数据组成的专栏:

  • 50595855
  • 59528522
  • C_213154
  • 23141411

问题是,当我阅读本专栏时,读者会告诉我第三行是空的。Excel中的列格式设置为"常规"。但当我将格式设置为"文本"时,一切都很好,读者可以看到该行中的数据。

所以,为了进行实验,我在前两行前面加了一个字母,并使其看起来如下:

  • C_50595855
  • C_59528522
  • C_213154
  • 23141411

即使将列格式设置为"常规",读者也能毫无问题地阅读所有内容。

因此,Excel显然在加载列之前以某种方式分析了列中的数据,当列的第一个单元格看起来像数字,而其他一些单元格是文本时,它会感到困惑。。

这对我来说真的很奇怪,因为要么单元格里有数据,要么没有。

有人知道为什么会发生这种事吗?

任何帮助都将不胜感激。

谨致问候,Igor

正如您推测的那样,这是由混合数据类型引起的问题。如果你在"OleDBDataReader混合类型"上搜索,你会得到一些答案。下面是一个描述问题的MSDN页面:

"这个问题是由Excel ISAM驱动程序的限制引起的,因为一旦它确定了Excel列的数据类型,它将为任何不是ISAM驱动为该Excel列默认的数据类型的值返回Null表示其采样中的大多数值。"

以及解决方案:

"请确保Excel中的数据是以文本形式输入的。仅将Excel列重新格式化为文本无法完成此操作。重新格式化Excel列后,您必须重新输入现有值。在Excel中,您可以使用F5键重新输入所选单元格中的现有值。

您可以添加选项IMEX=1;到OpenDatabase方法中的Excel连接字符串。例如:

Set Db = OpenDatabase("C:TempBook1.xls", False, True, "Excel 8.0; HDR=NO; IMEX=1;")

"

最新更新