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
是该列中最后一个非空单元格
当我通过单元格循环查找表单中的最后一个非空行时,
为了做到这一点,你将不得不遍历列以及行