用空行读取excel中的每一行时出错

时间:2014-01-27 06:01:54

标签: vb.net excel loops blank-line

嗨,我在这里遇到了问题。我有一个简单的excel文件,我想要做的就是读取列中的所有行并找到一个特定的字符串。但是出现错误,“从字符串转换”START“到'Double'类型无效ERROR',我谷歌并发现它是因为空行。那我怎么可能只是忽略空白行?到目前为止,这是我的代码:

For Each c In xlsWorkSheet.Range("B1:B300").Cells
   If IsNothing(c.value) Then
       x = x + 1
       MessageBox.Show(x)
   ElseIf c.Value = "START" Then
       MessageBox.Show(x)
   End If
Next

第一行是空行,因此输出:1

第二行有一个值并输出:2

但是当它读取没有值/空白的第3行时,它会输出错误。


到目前为止,这是我所做的代码:

  For Each c In xlsWorkSheet.Range("B1:B300").Cells
                If IsNothing(c.value) Then
                    x = x + 1
                ElseIf Not IsNothing(c.Value) Then
                    x = x + 1
                    If c.value.ToString.ToUpper <> "START" And c.value.ToString.ToUpper <> "END" Then
                    ElseIf c.value.ToString.ToUpper = "START" Then
                        start = x
                    ElseIf c.value.ToString.ToUpper = "END" Then
                        ends = x
                    End If
                End If
            Next

            MessageBox.Show(start)
            MessageBox.Show(ends)

            Dim objAdapter1 As New OleDbDataAdapter("SELECT * FROM [WORK SCHEDULE$B" & start & ":I" & ends & "]", objConn)

            Dim objDataset1 As New DataSet
            objAdapter1.Fill(objDataset1)

            DataGridView1.DataSource = objDataset1.Tables(0).DefaultView

此代码已成功运行:)

1 个答案:

答案 0 :(得分:0)

由于您想知道'START'是哪一行,请尝试下面的代码。

<强>更新:

试试这个:

LastUsedCol

之后添加此代码
    Dim _findSTART As Excel.Range = Nothing

    _findSTART = xlsWorkSheet.Range("B1:B" & lastUsedRow).Find("START", , _
                                Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
                                Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)

then update your `objAdapter1`

    Dim objAdapter1 As New OleDbDataAdapter("SELECT * FROM [Sheet1$B" & _findSTART.Row & ":I" & lastUsedRow & "]", objConn)