使用OleDbConnection时会忽略空单元格还是空单元格?

时间:2018-12-12 00:12:29

标签: excel vb.net oledb

Sample Pic

所以这是我从中读取数据的表。假设我告诉我的连接字符串选择A25:B50。

好吧,A47至B50为空。如果我专门告诉我的连接字符串仅使用A25:B46,它可以正常工作,但是,当我告诉它也选择B50时,它告诉我那里没有单元格。

如何使用最大为B50的连接字符串,以便将来如果我有更多数据,它也会读取它?

这是我选择的代码:

MyCommand2 = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$A25:B46] order by Visits desc", MyConnection2)
Dim DS = New System.Data.DataSet
MyCommand.Fill(DS)
For Each r As DataRow In DS.Tables(0).Rows
                DataGridView1.Rows.Add(r.Item("Places"), r.Item("Visits"))
            Next

2 个答案:

答案 0 :(得分:1)

选择第25列及以后的A-B列的所有行。

select * from [Sheet1$A25:B] order by Visits desc

并且除了空(或仅限空白)行之外。

select * from [Sheet1$A25:B] where len(trim(Places)) > 0 order by Visits desc

如果数据中间没有空行,则不会选择空行。 因此,如果数据采用所提供的形式,则我认为您无需具有Where子句。

我假设从第47行开始输入了空格。 尝试检查是否在看起来空的行中输入了空格等。

答案 1 :(得分:0)

看起来问题甚至与此无关。问题显然是因为我通过告诉代码执行以下操作来选择“总计”值(访问次数):Tables(0).Rows(21)(1)

很明显,如果我删除一行,则该特定单元格的位置将不再存在。 但是,@ m mukai的解决方案也可以改善我的代码。 谢谢大家。