使用VB 2013将DataGridView导出到Excel

时间:2018-04-30 16:34:53

标签: vb.net datagridview

我是VB 2013的新手。非常感谢任何建议和帮助。

我有一个datagridview,我想导出到Excel。我有代码工作,导出,但它不显示标题名称。我需要编辑代码以使标题名称也被覆盖。 另外,我想从导出中删除第一列。

Export Example

我的gridview代码示例:

Private Sub Button2_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button2.Click

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

    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Add(misValue)
    xlWorkSheet = xlWorkBook.Sheets("Sheet1")

    'Export Header Names Start
    Dim columnsCount As Integer = DataGridView1.Columns.Count
    For Each column In DataGridView1.Columns
        xlWorkSheet.Cells(1, column.Index + 1).Value = column.name
    Next
    '    'Export Header Name End

    For i = 0 To DataGridView1.RowCount - 2
        For j = 0 To DataGridView1.ColumnCount - 1
            xlWorkSheet.Cells(i + 1, j + 1) = _
                DataGridView1(j, i).Value.ToString()
        Next
    Next
    If System.IO.File.Exists("C:\test\export.xlsx") Then
        System.IO.File.Delete("C:\test\export.xlsx")
    End If
    xlWorkSheet.SaveAs("C:\test\export.xlsx")
    xlWorkBook.Close()
    xlApp.Quit()

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

    MsgBox("You can find the file here C:\test")
End Sub

DataGridview输出:

DataGridView

1 个答案:

答案 0 :(得分:0)

多年来我一直在使用这个功能。

Public Sub grid_ToExcel_Export(ByVal FileName As String, ByVal Data_GridView As DataGridView)
    Dim sb As New System.Text.StringBuilder
    Try
        Dim intColumn, intColumnValue As Integer
        Dim row As DataGridViewRow
        For intColumn = 0 To Data_GridView.Columns.Count - 1
            sb.Append(Data_GridView.Columns(intColumn).HeaderText)
            If intColumnValue <> Data_GridView.Columns.Count - 1 Then
                sb.Append(vbTab)
            End If
        Next
        sb.Append(vbCrLf)
        For Each row In Data_GridView.Rows
            For intColumnValue = 0 To Data_GridView.Columns.Count - 1
                sb.Append(StrConv(IIf(IsDBNull(row.Cells(intColumnValue).Value), "", row.Cells(intColumnValue).Value), VbStrConv.None))
                If intColumnValue <> Data_GridView.Columns.Count - 1 Then
                    sb.Append(vbTab)
                End If
            Next
            sb.Append(vbCrLf)
        Next
        SaveExcel(FileName, sb)
    Catch ex As Exception
        Throw
    Finally
        Data_GridView = Nothing
        sb = Nothing
    End Try
End Sub

Private Sub SaveExcel(ByVal fpath As String, ByVal sb As System.Text.StringBuilder)
    Dim fsFile As New FileStream(fpath, FileMode.Create, FileAccess.Write)
    Dim strWriter As New StreamWriter(fsFile, System.Text.Encoding.Unicode)
    Try
        With strWriter
            .BaseStream.Seek(0, SeekOrigin.End)
            .WriteLine(sb)
            .Close()
        End With
    Catch e As Exception
        msg(e.ToString)
    Finally
        sb = Nothing
        strWriter = Nothing
        fsFile = Nothing
    End Try
End Sub