Экспорт DataGridView в Excel с использованием VB 2013 - PullRequest
0 голосов
/ 30 апреля 2018

Я довольно новичок в VB 2013. Любые советы и помощь очень ценятся.

У меня есть сетевое представление, которое я хочу экспортировать в Excel. У меня работает код, который выполняет экспорт, но он не показывает имена заголовков. Мне нужно отредактировать код, чтобы перенести имена заголовков. Кроме того, я хочу удалить первый столбец из экспорта.

Export Example

Пример кода моей сетки:

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 голосов
/ 30 апреля 2018

В течение многих лет я использую эту функцию.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...