2009-11-29 3 views
3

Я использую OLE для подключения к базе данных с помощью VB.NET и покажу результаты в DataGridView.
Я хочу экспортировать данные, находящиеся в DataGridView, в файл формата Excel, т. Е. пользователь может сохранить содержимое DataGridView в виде файла MS Excel.Как экспортировать DataGridView в формат Excel в VB.NET

ответ

0

Простейший способ сделать это - использовать класс textfieldparser в microsoft.visualbasic.fileio (msdn link). Псевдокодом будет:

создать объект textfieldparser, установить файл для открытия (* .csv) и декодировать.

написать заголовки столбцов

петлю через DataGridView или его datsource печать в текстовый файл

Теперь пользователь может открыть файл в Excel.

Это мой быстрый ответ, я посмотрю, есть ли лучший способ сделать это.

2

Я обнаружил, что 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 
+0

Благодарим вас, но не можете ли вы опишите код более, пожалуйста? –

0

Private Sub Button1_Click (ByVal отправитель Как System.Object, ByVal е Как System.EventArgs) Ручки Button1.Click DATAGRIDVIEW_TO_EXCEL ((dataGridView1)) ПАРАМЕТР: ВАШ DataGridView End Sub

Private Sub DATAGRIDVIEW_TO_EXCEL (ByVal DGV Как DataGridView) Попробуйте Dim DTB = Новый DataTable, RWS As Integer, ЦБС 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 

End Sub

0

Я проверил его и его работу для меня.

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 
Смежные вопросы