如何在VB.NET中将DataGridView导出为Excel格式

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

我发现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 

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

创build一个textfieldparser对象,设置文件打开(* .csv)和解码。

写列标题

通过datagridview或其dataseource打印循环到文本文件

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

这是我的快速回答,我会看看是否有更好的方法来做到这一点。

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click DATAGRIDVIEW_TO_EXCEL((DataGridView1))'PARAMETER:YOUR DATAGRIDVIEW End Sub

Private Sub DATAGRIDVIEW_TO_EXCEL(ByVal DGV As DataGridView)尝试Dim DTB =新DataTable,RWS As Integer,CLS As Integer

  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 

结束小组

我为我testing了它和它的工作。

 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