【问题标题】:How to fix InvalidArgument= Value of '3' is not valid for 'index'. Parameter name: index in exporting listview items to excel如何修复 InvalidArgument=“3”的值对“索引”无效。参数名称:导出listview项到excel中的索引
【发布时间】:2019-02-17 04:18:18
【问题描述】:

我正在设置一个程序,并且想将我的列表视图项保存到 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 程序中显示以下列表视图项,但只是出现错误,因此无法继续。

【问题讨论】:

    标签: vb.net-2010


    【解决方案1】:

    请尝试以下更新的代码:

    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
    

    【讨论】:

    • 成功了!但是有多余的列,我试图编辑这些列并删除它们,但它仍然存在
    • 订单清单价格清单数量订单清单价格清单汉堡餐 3 299 1 汉堡餐 2 219 1 普通汉堡 59 1 玉米片 99 1 Excel 工作表中有两个额外的列我试图删除所有列,并重新调整索引,但它仍然没有工作。感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多