VB.NET与空的Excel Cell连接-NullReFerenceException



我与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)的情况下进行更改。值等。但是我总是失败 - 使其工作的唯一方法是通过尝试 - 捕捉,但我想知道我的做错了以及如何以正确的方式修复它?

好吧,您可以做的一件事是使用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中的一个空单元的值无需

将循环更改为如下

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

您提出的行是第一个空牢房, lrow-1是该列中的最后一个非空单元

当我循环通过细胞循环以在内部找到最后的非空行 床单,

为了做到这一点

最新更新