2013-07-26 11 views
0

J'essaie d'exporter des valeurs dans un contrôle DataGrid pour les exceler. Le problème que j'ai est que, après le débogage, lorsque je clique sur le bouton, l'application reste bloquée. Je ne peux pas fermer le formulaire non plus. Je dois cliquer sur le bouton de débogage. Le fichier Excel n'est pas non plus créé.Exportation de valeurs de DataGrid vers Excel

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    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 

    xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass 
    xlWorkBook = xlApp.Workbooks.Add(misValue) 
    xlWorkSheet = CType(xlWorkBook.Worksheets.Item("sheet1"), Microsoft.Office.Interop.Excel.Worksheet) 
    For i = 0 To DataGridView1.RowCount - 2 
     For j = 0 To DataGridView1.ColumnCount - 1 
      For k As Integer = 1 To DataGridView1.Columns.Count 
       xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText 
       xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString() 
      Next 
     Next 
    Next 



    xlWorkSheet.SaveAs("D:\vbexcel.xlsx") 
    xlWorkBook.Close() 
    xlApp.Quit() 

    xlApp = Nothing 
    xlWorkBook = Nothing 
    xlWorkSheet = Nothing 

    MsgBox("You can find the file D:\vbexcel.xlsx") 

End Sub 
+0

Avez-vous renforcé par le code? A quel moment de l'exécution le programme gèle-t-il? –

+0

kk .... le code fonctionne réellement .. mais cela prend beaucoup de temps ... comment puis-je l'accélérer? – user2444712

Répondre

0

Try this ...

For k As Integer = 0 To DataGridView1.Columns.Count - 1 
    xlWorkSheet.Cells(1, k + 1) = DataGridView1.Columns(k).HeaderText 
Next 
For i = 0 To DataGridView1.RowCount - 1 
    For j = 0 To DataGridView1.ColumnCount - 1 

     xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString() 

    Next 
Next 
+0

merci .... il faut environ 10 secondes pour créer le fichier Excel ... pouvez-vous m'aider à accélérer? – user2444712

+0

@ user2444712 ​​.. est-ce mieux que le vôtre? .. parce que je pense que ce calme rapide pour le travail d'interopérabilité .. ou peut-être vous pouvez essayer d'ouvrir votre Excel comme connexion DB .. – matzone

Questions connexes