2013-07-26 5 views
0

Я пытаюсь экспортировать значения в элемент управления datagrid для excel. Проблема, с которой я сталкиваюсь, заключается в том, что после отладки, когда я нажимаю кнопку, приложение просто застревает. Я тоже не могу закрыть форму. Я должен нажать кнопку отладки. Файл excel также не создается.Экспорт значений datagrid в 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

Вы активизировали через код? В какой момент выполнения программа замораживается? –

+0

kk .... код действительно работает .. но это занимает много времени ... как я могу ускорить его? – user2444712

ответ

0

Попробуйте это ...

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

спасибо .... это все равно занимает около 10 секунд, чтобы создать файл excel ... может ли помочь мне ускорить его? – user2444712

+0

@ user2444712 ​​.. он работает лучше, чем ваш? .. потому что я думаю, что это тихое время для работы в команде. Или, может быть, вы можете попробовать открыть свое превосходство как соединение с БД .. – matzone

Смежные вопросы