如何修复InvalidArgument ='3'的值对'index'无效。参数名称:将listview项目导出为ex cel时的索引

问题描述 投票:0回答:1

我正在设置一个程序,并希望将我的listview项目保存到Excel,但保存我的项目总是出错。

我使用Windows 7和Visual Basic 2010.实际上有3列,并且因为我正在运行食物菜单程序,所以行的数量意外,所以子项目的数量是意料之外的。

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As 
    System.EventArgs) Handles Button13.Click
    Try
        Me.Cursor = Cursors.WaitCursor
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim i As Integer
        Dim j As Integer

        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
            For i = 1 To Me.ListView1.Items.Count
                .cells(i, 1) = Me.ListView1.Items(i - 1).Text
                For j = 1 To ListView1.Columns.Count - 1
                    .cells(i, j + 1) = Me.ListView1.Items(i - 1).SubItems(j).Text
                Next
            Next
        End With
        ExcelApp.Visible = True
        ExcelSheet = Nothing
        ExcelBook = Nothing
        ExcelApp = Nothing
        Me.Cursor = Cursors.Default
    Catch ex As Exception
        Me.Cursor = Cursors.Default
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Exit Sub
End Sub

我希望它在Excel程序中显示以下listview项,但只是一个错误,所以它无法继续。

vb.net-2010
1个回答
0
投票

请尝试以下更新的代码:

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    Try
        Me.Cursor = Cursors.WaitCursor
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim i As Integer
        Dim j As Integer

        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
        For i = 0 To Me.ListView1.Columns.Count - 1
           .cells(1, i + 1) = Me.ListView1.Columns(i).Text
        Next
        For i = 0 To Me.ListView1.Items.Count - 1
           For j = 0 To Me.ListView1.Items(i).SubItems.Count - 1
              .cells(i + 2, j + 1) = Me.ListView1.Items(i).SubItems(j).Text
           Next
        Next
        End With
        ExcelApp.Visible = True
        ExcelSheet = Nothing
        ExcelBook = Nothing
        ExcelApp = Nothing
        Me.Cursor = Cursors.Default
    Catch ex As Exception
        Me.Cursor = Cursors.Default
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Exit Sub
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.