将所有记录从datagridview导出到Excel VB.NET

时间:2016-09-13 01:21:27

标签: vb.net excel datagridview

我使用此代码将我的记录导出到excel并且工作正常,但它只导出一行。无论如何都要在datagridview中记录我的所有数据?另外,我不熟悉VB中的水晶报告,所以我想使用按钮点击事件..

Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer

xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")


For i = 0 To DataGridView1.RowCount - 2
    For j = 0 To DataGridView1.ColumnCount - 1
        For k As Integer = 1 To DataGridView1.Columns.Count
            xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
            xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
        Next
    Next
Next

xlWorkSheet.SaveAs("D:\vbexcel.xlsx")
xlWorkBook.Close()
xlApp.Quit()

releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)

MsgBox("You can find the file D:\vbexcel.xlsx")
End Sub

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

我无法对发布此代码的人发表评论,因为我的声誉很少......

1 个答案:

答案 0 :(得分:1)

更改您的For Loop

   'FOR HEADERS
    For i = 1 To DataGridView1.ColumnCount
        xlWorkSheet.Cells(1, i) = DataGridView1.Columns(i - 1).HeaderText
        'FOR ITEMS
        For j = 1 To DataGridView1.RowCount
            xlWorkSheet.Cells(j + 1, i) = DataGridView1(i - 1, j - 1).Value.ToString()
        Next
    Next