如果列中的前一个单元格为空,DataReader 不会在 Excel 单元格中看到数据

Posted

技术标签:

【中文标题】如果列中的前一个单元格为空,DataReader 不会在 Excel 单元格中看到数据【英文标题】:DataReader does not see data in Excel cell if previous cell in the column are empty 【发布时间】:2012-09-05 10:20:16 【问题描述】:

我在使用 OleDbDataReader 读取 .xls 文件时遇到了一个奇怪的问题。

基本上,如果列中的先前单元格为空,则它不会在单元格中看到数据。

如果我在 Excel 工作表顶部移动带有数据的行,则一切正常。我不确定,但我认为这与包含数据的单元格之前的空单元格的数量有关。

任何帮助或建议将不胜感激。

【问题讨论】:

请向我们展示一些代码,以便我们验证/证伪您的假设。 在发布代码时并没有真正看到任何意义。如果我在 Excel 工作表顶部移动问题行,问题就会消失,即这不起作用:HEADER 100 Empty cells Not Empty cell 这会:HEADER 7(任何小数字)Empty cells NOT Empty cell 这也有效:HEADER非空单元格 【参考方案1】:

你可能有一个这样的连接字符串:

<add name="MyApp.Properties.Settings.ExcelConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties=&quot;Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text;&quot;;"/>

注意“TypeGuessRows”。它告诉 Excel 要扫描多少行以尝试猜测列的数据类型。值 0(零)告诉它扫描所有行。这对你有帮助吗?

【讨论】:

非常感谢您的回复,GreatBittern。实际上,我几周前就想出了答案,只是忘记在此处发布解决方案。对此我深表歉意。

以上是关于如果列中的前一个单元格为空,DataReader 不会在 Excel 单元格中看到数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将两列与数据合并,如果一列的单元格为空,则相邻的单元格已满?

如果当前单元格在 VBA 中为空,则获取相邻单元格的值

如果 A 列中的单元格为空白,则针对不同工作表中的数据集查找 B 列

如果单元格为空白,则清除 VBA 中另一个单元格代码的内容

复制并粘贴到另一个工作表的第一个空行,如果第一个单元格为空,则粘贴到上一行

在点击之前如何使JTable中的单元格为空?