循环读取excel数据

Pau*_*ine 1 vb.net excel vba excel-interop

我需要将读取的数据从excel循环到vb.net,当我到达最后一行/列"!@#$%^&*()"时,excel数据将停止读取.我怎样才能做到这一点?

Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim xRange As Excel.Range
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
    Private Sub cmdGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerate.Click
        'Dim row As String
        Dim empty_cell_ctr As Integer = 0 '5
        Dim end_of_xlsheet As Boolean = False
        Dim sRow As Integer 'start row
        Dim col_end As Integer 'col W
        '
        'loading excel(open and read)
        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open("c:\sample.xls")
        xlWorkSheet = xlWorkBook.Worksheets("Timesheet")
        xlApp.Visible = True

        While Not end_of_xlsheet

           If sRow = "'!@#$%^&*()_+" Then
                xRange = xRange.Cells(sRow, col_end)
                end_of_xlsheet = False 'end of sheet
                Continue While
           End If

           sRow += 1

        End While

        MessageBox.Show(sRow)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

JMK*_*JMK 5

您似乎过度思考了这一点,您可以通过访问UsedRange属性获取电子表格中的所有数据,然后通过访问此对象的Value2属性将其加载到2D数组变量中,如下所示:

Dim application = New Excel.Application()
Dim workbook As Excel.Workbook = application.Workbooks.Open("C:\aaa\bbb.xlsx")
Dim worksheet As Excel.Worksheet = workbook.Sheets(1)

Dim usedRange = worksheet.UsedRange
Dim usedRangeAs2DArray As Object(,) = usedRange.Value2

workbook.Save()
workbook.Close()
application.Quit()

Marshal.ReleaseComObject(application)
Run Code Online (Sandbox Code Playgroud)

  • 出色、简单和清晰的响应。可以将事件标记为答案。但我只需要添加一件事:Excel 是基于 1 的索引,而不是任何其他基于 0 的索引 Enumarable 对象(在这种情况下是数组类型)。当您遍历“usedRangeAs2DArray”时,请记住这一点。这意味着 XLusedRangeAs2DArray 中的第一个可访问对象是 XLusedRangeAs2DArray(1, 1)。 (2认同)