使用listview标题将listview项导出到excel表

时间:2014-01-05 21:12:35

标签: vb.net

我有这个代码将listview中的数据导出到Excel工作表,但是此代码导出的数据没有列表视图的标题。

如何编辑此代码以显示列表视图的标题?

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    SaveFileDialog1.Title = "Save Excel File"
    SaveFileDialog1.Filter = "Excel files (*.xls)|*.xls|Excel Files (*.xlsx)|*.xslx"
    SaveFileDialog1.ShowDialog()
    'exit if no file selected
    If SaveFileDialog1.FileName = "" Then
        Exit Sub
    End If
    'create objects to interface to Excel
    Dim xls As New Excel.Application
    Dim book As Excel.Workbook
    Dim sheet As Excel.Worksheet
    'create a workbook and get reference to first worksheet
    xls.Workbooks.Add()
    book = xls.ActiveWorkbook
    sheet = book.ActiveSheet
    'step through rows and columns and copy data to worksheet
    Dim row As Integer = 1
    Dim col As Integer = 1
    For Each item As ListViewItem In ListView1.Items
        For i As Integer = 0 To item.SubItems.Count - 1
            sheet.Cells(row, col) = item.SubItems(i).Text
            col = col + 1
        Next
        row += 1
        col = 1
    Next
    'save the workbook and clean up
    book.SaveAs(SaveFileDialog1.FileName)
    xls.Workbooks.Close()
    xls.Quit()
    releaseObject(sheet)
    releaseObject(book)
    releaseObject(xls)
End Sub

Private Sub releaseObject(ByVal obj As Object)
    'Release an automation object
    Try
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
        obj = Nothing
    Catch ex As Exception
        obj = Nothing
    Finally
        GC.Collect()
    End Try
End Sub

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码获取每个列文本:

Dim columns As New List(Of String)
    Dim columncount As Integer = ListView1.Columns.Count - 1


    For i As Integer = 0 To columncount
        columns.Add(ListView1.Columns(i).Text)
    Next


    For Each columnname In columns
        MessageBox.Show(columnname)
    Next

答案 1 :(得分:1)

在您输入循环以导出数据之前,您需要迭代ListView

中的ColumnHeaderCollection
For i = 0 To ListView1.Columns.Count - 1
  sheet.Cells(1, i + 1) = ListView1.Items(i).Name
Next

答案 2 :(得分:1)

 SaveFileDialog1.Title = "Save Excel File"
        SaveFileDialog1.Filter = "Excel Files (*.xlsx)|*.xlsx"
        SaveFileDialog1.ShowDialog()
        'exit if no file selected
        If SaveFileDialog1.FileName = "" Then
            Exit Sub
        End If
        'create objects to interface to Excel
        Dim xls As New Excel.Application
        Dim book As Excel.Workbook
        Dim sheet As Excel.Worksheet
        'create a workbook and get reference to first worksheet
        xls.Workbooks.Add()
        book = xls.ActiveWorkbook
        sheet = book.ActiveSheet

        'step through rows and columns and copy data to worksheet
        Dim row As Integer = 2
        Dim col As Integer = 1

        '////////////////////////////////////////////////////////////////////////
        Dim rowhead As Integer = 1
        Dim colhead As Integer = 1

        Dim columns As New List(Of String)
        Dim columncount As Integer = LvCOCONFIRMATION.Columns.Count - 1
        For i As Integer = 0 To columncount
            sheet.Cells(rowhead, colhead) = LvCOCONFIRMATION.Columns(i).Text
            colhead = colhead + 1
        Next
        '////////////////////////////////////////////////////////////////////////

        For Each item As ListViewItem In LvCOCONFIRMATION.Items
            For i As Integer = 0 To item.SubItems.Count - 1
                sheet.Cells(row, col) = item.SubItems(i).Text
                col = col + 1
            Next
            row += 1
            col = 1
        Next

        'save the workbook and clean up
        book.SaveAs(SaveFileDialog1.FileName)
        xls.Workbooks.Close()
        xls.Quit()
        releaseObject(sheet)
        releaseObject(book)
        releaseObject(xls)