【问题标题】:How to export a DataGridView to Excel format in VB.NET如何在 VB.NET 中将 DataGridView 导出为 Excel 格式
【发布时间】:2010-12-21 08:36:42
【问题描述】:

我正在使用 OLE 连接到使用 VB.NET 的数据库,并在 DataGridView 中显示结果。
我想将 DataGridView 中的数据导出为 Excel 格式文件,即 用户可以将 DataGridView 的内容保存为 MS Excel 文件。

【问题讨论】:

    标签: vb.net excel datagrid oledb


    【解决方案1】:

    我发现 copyfromrecordset 是最快的方法。

    Dim xlApp As New Excel.Application
        Dim xlWBook As Excel.Workbook = xlApp.Workbooks.Add
        Dim XlSheet As Excel.Worksheet = CType(xlWBook.Worksheets("Sheet1"), Excel.Worksheet)
        With XlSheet
             'insert column names
            For i = 2 To dt.Columns.Count - 1
                .Cells(1, i).value = dt.Columns(i - 1).ColumnName
            Next
            'insert the actual data
            .Range("A2").CopyFromRecordset(datset)
    
        End With
    

    【讨论】:

      【解决方案2】:

      最简单的方法是使用 microsoft.visualbasic.fileio (msdn link) 中的 textfieldparser 类。伪代码是:

      创建一个 textfieldparser 对象,将文件设置为打开 (*.csv),并进行解码。

      写列标题

      遍历 datagridview 或其数据源 打印到文本文件

      用户现在可以在 excel 中打开文件。

      这是我的快速回答,我会看看是否有更好的方法。

      【讨论】:

        【解决方案3】:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 Button1.Click DATAGRIDVIEW_TO_EXCEL((DataGridView1)) ' 参数:你的 DATAGRIDVIEW 结束子

        Private Sub DATAGRIDVIEW_TO_EXCEL(ByVal DGV As DataGridView) 尝试 Dim DTB = 新数据表,RWS 作为整数,CLS 作为整数

            For CLS = 0 To DGV.ColumnCount - 1 ' COLUMNS OF DTB
                DTB.Columns.Add(DGV.Columns(CLS).Name.ToString)
            Next
        
            Dim DRW As DataRow
        
            For RWS = 0 To DGV.Rows.Count - 1 ' FILL DTB WITH DATAGRIDVIEW
                DRW = DTB.NewRow
        
                For CLS = 0 To DGV.ColumnCount - 1
                    Try
                        DRW(DTB.Columns(CLS).ColumnName.ToString) = DGV.Rows(RWS).Cells(CLS).Value.ToString
                    Catch ex As Exception
        
                    End Try
                Next
        
                DTB.Rows.Add(DRW)
            Next
        
            DTB.AcceptChanges()
        
            Dim DST As New DataSet
            DST.Tables.Add(DTB)
            Dim FLE As String = "" ' PATH AND FILE NAME WHERE THE XML WIL BE CREATED (EXEMPLE: C:\REPS\XML.xml)
            DTB.WriteXml(FLE)
            Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE
            Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL
        
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        

        结束子

        【讨论】:

          【解决方案4】:

          我测试了它并为我工作。

          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
          
              Try
          
                  xlApp = New Microsoft.Office.Interop.Excel.Application
                  xlApp.Application.DisplayAlerts = False
                  xlWorkBook = xlApp.Workbooks.Add(misValue)
                  xlWorkSheet = xlWorkBook.Sheets.Add()
                  xlWorkSheet.Name = "MysqlSheet"
          
                  For i = 0 To Form2.DataGridView2.RowCount - 1
                      For j = 0 To Form2.DataGridView2.ColumnCount - 1
                          For k As Integer = 1 To Form2.DataGridView2.Columns.Count
                              xlWorkSheet.Cells(1, k) = Form2.DataGridView2.Columns(k - 1).HeaderText
                              xlWorkSheet.Cells(i + 2, j + 1) = Form2.DataGridView2(j, i).Value
                          Next
                      Next
                  Next
          
                  xlWorkSheet.SaveAs("c:\")  'Where u want to save
                  xlWorkBook.Close()
                  xlApp.Quit()
          
          
          
          
              Catch ex As Exception
                  MsgBox(ex.Message)
              Finally
          
              End Try
          

          【讨论】:

            猜你喜欢
            • 2010-10-15
            • 2017-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-24
            相关资源
            最近更新 更多