Hallo
Ich habe eine Datagridview die an eine BindingSource gebunden ist. Die BindingSource ist an eine Datatabel gebunden. Die BindingSource habe ich eingebaut um die Filterfunktion zu verwenden.
Ich möchte jetzt nun die Daten aus der Datagridview in eine Excel Datei schreiben.
Ich habe das mit folgendem Code realisiert mit
Imports Microsoft.Office.Interop
Das funktioniert auch. Allerdings dauert das verdammt lange. Bei 6000 Zeilen zirka 1 Minute. Wenn ich die Inhalte aus der Datagridview manuell kopiere, Excel öffne und einfüge geht das sofort.
Weiss jemand wie ich das schneller machen kann?
Wichtig: Ich möchte nur die Daten aus der Datagridview in der Excel Datei haben (also die gefilterten) nicht die aus der Datatabel.
mfg
Ich habe eine Datagridview die an eine BindingSource gebunden ist. Die BindingSource ist an eine Datatabel gebunden. Die BindingSource habe ich eingebaut um die Filterfunktion zu verwenden.
Ich möchte jetzt nun die Daten aus der Datagridview in eine Excel Datei schreiben.
Ich habe das mit folgendem Code realisiert mit
Imports Microsoft.Office.Interop
VB.NET-Quellcode
- Dim saveFileDialog1 As New SaveFileDialog()
- saveFileDialog1.Filter = "Excel|*.xlsx"
- saveFileDialog1.Title = "Exportieren"
- If saveFileDialog1.ShowDialog = DialogResult.OK Then
- Try
- 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 = CType(xlWorkBook.Sheets(1), Excel.Worksheet
- For i = 0 To DataGridView2.RowCount - 1
- For j = 0 To DataGridView2.ColumnCount - 1
- If DataGridView1(j, i).Value IsNot Nothing Then
- xlWorkSheet.Cells(i + 1, j + 1) = DataGridView2(j, i).Value.ToString()
- End If
- Next
- Next
- xlWorkSheet.SaveAs(saveFileDialog1.FileName)
- xlWorkBook.Close()
- xlApp.Quit()
- Catch ex As Exception
- 'Fehler
- MsgBox("Fehler beim Übertragen der Daten nach Excel!" & vbCrLf &
- ex.Message, MsgBoxStyle.Exclamation)
- End Try
- End If
Das funktioniert auch. Allerdings dauert das verdammt lange. Bei 6000 Zeilen zirka 1 Minute. Wenn ich die Inhalte aus der Datagridview manuell kopiere, Excel öffne und einfüge geht das sofort.
Weiss jemand wie ich das schneller machen kann?
Wichtig: Ich möchte nur die Daten aus der Datagridview in der Excel Datei haben (also die gefilterten) nicht die aus der Datatabel.
mfg