VB.NET连接空的Excel单元格 – NullReferenceException是cought

我在VB.NET中使用Excel连接时遇到问题。 当我通过单元格循环查找表单中的最后一个非空行,当涉及到我比较空单元格的值的时刻“”我收到错误: NullReferenceException被捕获。 你调用的对象是空的。”

有一段代码:

  Dim xlApp As New Excel.Application Dim xlWb As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim lRow As Integer = 1 Dim excelFilePath As String Using FileDialog As New OpenFileDialog FileDialog.Title = "Please choose Excel file with XXX" FileDialog.FileName = "" FileDialog.ShowDialog() excelFilePath = FileDialog.FileName End Using xlApp.Visible = True xlWb = xlApp.Workbooks.Open(excelFilePath) xlsheet = xlWb.Sheets("Sheet1") Do While xlsheet.Cells(lRow, 3).value.ToString() <> "" lRow += 1 Loop 

我尝试更改条件许多时间xlsheet.Cells(lRow,3).value等,但我总是失败 – 唯一的方法,使其工作是通过尝试赶上,但我想知道我做错了什么,如何以适当的方式解决它?

那么,你可以做的一件事就是使用String.IsNullOrEmpty ,所以Do循环看起来像这样:

 Do While String.IsNullOrEmpty(xlsheet.Cells(lRow, 3).value) = False lRow += 1 Loop 

但是这可能会让你陷入无限循环,所以你可能会考虑使用For Next来代替:

你应该首先得到最后使用的行:

 Dim lastRow As Integer = xlsheet.Cells(xlsheet.Rows.Count, 3).End(Excel.XlDirection.xlUp).Row 'Then use the loop: For x = 1 To lastRow If String.IsNullOrEmpty(xlsheet.Cells(x, 3).value) = False Then 'Do something End If Next 

如果您的主要目的是获取最后使用的行,则不必遍历行。 你可以使用这一行:

 Dim lastRow As Integer = xlsheet.Cells(xlsheet.Rows.Count, 3).End(Excel.XlDirection.xlUp).Row 

希望帮助:)

excel中的空单元格的值是NOTHING

改变你的循环如下

  Do While xlsheet.Cells(lRow, 3).value IsNot Nothing lRow += 1 Loop 

你出来的lrow-1行是第一个空单元格, lrow-1是该列中最后一个非空单元格

当我通过单元格循环查找表单中的最后一个非空行时,

为了做到这一点,你将不得不遍历列以及行