VB.net 查找 excel 数据范围并将其读取到列表中

VB.net Find and read range of excel data to a list

提问人:pball 提问时间:11/17/2023 更新时间:11/17/2023 访问量:30

问:

我希望将 Excel 文件中的一系列数据读取到列表中,以便进一步处理它。Excel 文件将是一个标准模板,但我想容纳或多或少的行/列,而不是对要读取的范围进行硬编码。从下图中,我希望阅读 A4 到 U23。我已经开始寻找带有“用户 1”和“相关危险”的单元格,目的是使用它们来获取我想要读取的单元格范围。似乎应该有一种更有效的方法来做到这一点。

我下面的代码返回 $A 美元 3 美元和 $U 美元,这是一个不错的开始,但仍然有很多工作要做。我很欣赏更好的方法的例子。

        Dim OpenDialog As New OpenFileDialog

        OpenDialog.Filter = "Excel Files (*.xlsx)|*.xlsx"
        OpenDialog.Title = "Open Template File"

        If (OpenDialog.ShowDialog() <> Windows.Forms.DialogResult.OK) Then Exit Sub

        Dim objXLApp As New Excel.Application
        objXLApp.Workbooks.Open(OpenDialog.FileName)

        Dim objXLWs As Excel.Worksheet = objXLApp.Workbooks(1).Worksheets("Sheet1")
        Dim objRange As Excel.Range

        objRange = objXLWs.UsedRange

        Dim FirstTableStart As String
        Dim FirstTableEnd As String
        FirstTableStart = objRange.Find("User 1").Address
        With objXLWs.Range(objRange.Find("Associated Hazards").Address).MergeArea
            FirstTableEnd = .Cells(.Rows.Count, .Columns.Count).address
        End With

        MsgBox(FirstTableStart & vbNewLine & FirstTableEnd)

        objXLApp.Quit()

单元格“用户 1”和“相关危险”的值不会更改,但行/列可能会更改,并且表格将始终将最后一列充满“#”到需要读取的底行。此表的右侧和下方将有其他数据。

Example Excel table

Excel vb.net

评论


答: 暂无答案