2017-07-12 1 views
0

Récemment, j'ai travaillé sur un projet visant à permettre à l'utilisateur d'envoyer les données complétées dans DataGridView sous forme de tableau Excel, et tout d'abord la table doit être enregistré dans le PC de l'utilisateur. J'utilise le code affiché ci-dessous:Exportation de données à partir de DataGridView en tant que tableau Excel à l'aide de VB.NET

Private Sub Bt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt2.Click 
    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 Int16, j As Int16 

    xlApp = New Excel.Application 
    xlWorkBook = xlApp.Workbooks.Add(misValue) 
    xlWorkSheet = xlWorkBook.Sheets("sheet1") 


    For i = 0 To dg.RowCount - 2 
     For j = 0 To dg.ColumnCount - 1 
      xlWorkSheet.Cells(i + 1, j + 1) = dg(j, i).Value.ToString() 
     Next 
    Next 

    xlWorkBook.SaveAs("C:\Users\Abstract\Desktop\file1.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, 
     Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue) 
    xlWorkBook.Close(True, misValue, misValue) 
    xlApp.Quit() 

    releaseObject(xlWorkSheet) 
    releaseObject(xlWorkBook) 
    releaseObject(xlApp) 

    MessageBox.Show("Over") 
End Sub 
Private Sub releaseObject(ByVal obj As Object) 
    Try 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) 
     obj = Nothing 
    Catch ex As Exception 
     obj = Nothing 
     MessageBox.Show("Exception Occured while releasing object " + ex.ToString()) 
    Finally 
     GC.Collect() 
    End Try 
End Sub 

L'utilisateur clique sur le bouton pour enregistrer son DataGrid sous forme de tableau Excel. Cependant, après avoir fait cela, je reçois une exception (à la première rangée, où je mis xlApp en application Excel) avec le texte suivant:

COM Exception Ocurred 
Exception thrown: 'System.Runtime.InteropServices.COMException' in trimitere_excel.exe 
Additional information: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 

J'ai cherché pendant presque 2 jours pour obtenir plus de cela, mais rien que j'ai trouvé résolu mon problème. Si vous avez une idée de ce que je devrais faire, je serais vraiment reconnaissant pour tout conseil qui pourrait me sortir de cette situation! Passez une bonne journée! :)

Répondre

0

Peut-être que cela va aider:

Imports Excel = Microsoft.Office.Interop.Excel 
Imports Microsoft.Office 
Imports Microsoft.Office.Interop 


Private Sub Bt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt2.Click 

Dim pathExcel As String = "C:\Users\Abstract\Desktop\file1.xls" 
Dim xlApp As Excel.Application = New Excel.Application 
Dim misValue As Object = System.Reflection.Missing.Value 
Dim xlWorkBook As Excel.Workbook 
xlWorkBook = xlApp.Workbooks.Add(misValue) 
Dim xlWorksheet As Excel.Worksheet = xlWorkBook.Sheets("sheet1") 

For i = 0 To dg.RowCount - 2 
    For j = 0 To dg.ColumnCount - 1 
     xlWorkSheet.Cells(i + 1, j + 1) = dg(j, i).Value.ToString() 
    Next 
Next 

xlWorkBookSum.SaveAs(pathExcel) 
xlWorkBookSum.Close() 
xlApp.Quit() 

releaseObject(xlWorkSheet) 
releaseObject(xlWorkBook) 
releaseObject(xlApp) 

MessageBox.Show("Over") 

End Sub 
+0

J'ai essayé avant et ne fonctionne pas (oublié de coller les importations dans l'exemple de code ainsi, mon mauvais) –

+0

Pourriez-vous s'il vous plaît me dire si vous ajoutez une référence à la bibliothèque d'objets Microsoft Excel à votre projet? –

+0

Voulez-vous dire Microsoft.Office.Interop.Excel? –