VB.NET 2010 export de donnée d'un datagridviw vers excell [Résolu]

merlin1977 13 Messages postés mardi 25 septembre 2007Date d'inscription 26 novembre 2012 Dernière intervention - 26 nov. 2012 à 15:28 - Dernière réponse : merlin1977 13 Messages postés mardi 25 septembre 2007Date d'inscription 26 novembre 2012 Dernière intervention
- 26 nov. 2012 à 18:44
Bonjour,
j'utilise le code ci-dessous pour exporter des données depuis des datagridview, tout fonctionne bien sous visual studio 2008 et tout fonctionne si j'importe un projet de visual studio 2008 vers visual studio 2010 mais si je crée le module dans visual studio 2010 ou que je l'importe j'ai beau bien référencer mon Excel... j'ai un message d'erreur :

Erreur 4 Impossible d'incorporer le type interop 'ApplicationClass'. Utilisez l'interface applicable à la place.
qui correspond à la ligne :

Dim excel As New Excel.ApplicationClass

Voir tout le code normalement fonctionnel ci-dessous


Imports Microsoft.Office.Interop

Module ExportExcell

    'necessite la reference microsoft excel X object
    Sub export(ByVal snamedatagridview As Object)
        Try
            If ((snamedatagridview.Columns.Count 0) Or (snamedatagridview.Rows.Count 0) Or (snamedatagridview.Rows.Count > 60000)) Then
                Exit Sub
            End If

            'Creating dataset to export
            Dim dset As New DataSet
            'add table to dataset
            dset.Tables.Add()
            'add column to that table
            For i As Integer = 0 To snamedatagridview.ColumnCount - 1
                dset.Tables(0).Columns.Add(snamedatagridview.Columns(i).HeaderText)
            Next
            'add rows to the table
            Dim dr1 As DataRow
            For i As Integer = 0 To snamedatagridview.RowCount - 1
                dr1 = dset.Tables(0).NewRow
                For j As Integer = 0 To snamedatagridview.Columns.Count - 1
                    dr1(j) = snamedatagridview.Rows(i).Cells(j).Value
                Next
                dset.Tables(0).Rows.Add(dr1)
            Next

            Dim excel As New Excel.ApplicationClass
            Dim wBook As Microsoft.Office.Interop.Excel.Workbook
            Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet

            wBook = excel.Workbooks.Add()
            wSheet = wBook.ActiveSheet()

            Dim dt As System.Data.DataTable = dset.Tables(0)
            Dim dc As System.Data.DataColumn
            Dim dr As System.Data.DataRow
            Dim colIndex As Integer = 0
            Dim rowIndex As Integer = 0

            For Each dc In dt.Columns
                colIndex = colIndex + 1
                excel.Cells(1, colIndex) = dc.ColumnName
            Next

            For Each dr In dt.Rows
                rowIndex = rowIndex + 1
                colIndex = 0
                For Each dc In dt.Columns
                    colIndex = colIndex + 1
                    excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)

                Next
            Next

            wSheet.Columns.AutoFit()
            Dim strFileName As String = Environment.CurrentDirectory & "\temp.xls"
            Dim blnFileOpen As Boolean = False
            Try
                Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName)
                fileTemp.Close()
            Catch ex As Exception
                blnFileOpen = False
            End Try

            If System.IO.File.Exists(strFileName) Then
                System.IO.File.Delete(strFileName)
            End If

            wBook.SaveAs(strFileName)
            excel.Workbooks.Open(strFileName)
            excel.Visible = True
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module




Merci de votre aide je me cogne la tête contre les murs....




Gros débutant cherche à progresser :)
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
1
Merci
Je suis novice également, mais j'ai du faire face au même problème que toi.

Enlève class de ton Dim excel As New Excel.ApplicationClass et ça marchera.

Bonne continuation.

Merci lucaspzt 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de lucaspzt
Utilisateur anonyme - 26 nov. 2012 à 18:11
0
Merci
Bonjour,

Ajoute une référence à Excel lui-même,comme tu l'as déjà fait pour Office et remplace la ligne:

 Dim excel As New Excel.ApplicationClass


par

Dim Excel As Microsoft.Office.Interop.Excel
Commenter la réponse de Utilisateur anonyme
merlin1977 13 Messages postés mardi 25 septembre 2007Date d'inscription 26 novembre 2012 Dernière intervention - 26 nov. 2012 à 18:44
0
Merci
Merci beaucoup pour vos réponse ça marche parfaitement en mettant Dim excel As New Excel.Application
ce qui est hallucinant c'est que lorsqu'on importe un ancien projet de 2008 vers 2010 il garde l'ancien code et que là ça marche!!
Encore merci pour votre aide j'étais pas du tout parti sur une solution de ce type.





Gros débutant cherche à progresser :)
Commenter la réponse de merlin1977

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.