IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.net] Exporter un DataSet vers Excel


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut [VB.net] Exporter un DataSet vers Excel
    Bonjour,

    Je débute un peu avec la manipulation de bases de données sur VB.net.
    J'ai une base de donnée Access ( *.mdb ) dans lequel se trouve une requete qui me sort donc une base de donnée.

    J'arrive a importer et afficher le résultat de cette requete dans un DataGrid.

    J'aimerais maintenant exporter ce résultat dans un fichier Excel. Dans la FAQ se trouve un code que j'applique mais il me trouve des erreurs:
    code complet ICI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim xlApp As Excel.Application
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
     
            xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
            xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
            xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
    Il n'accepte pas les Excel.Application, Excel.workbook et Excel.worksheet.
    J'ai pourtant bien ajouté la référence comme précisé dans la FAQ

    Qu'ai-je oublié ?


    merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    erf,

    J'ai refait la configuration aprés avoir posté et finalement sa fonctionne
    J'etait pourtant certain de ne rien avoir oublié...

    par contre il me trouve une autre erreur pendant l'exécution du code:
    "L'exception COMexeption n'a pas été gérée.
    Exeption de HRESULT 0x800A03EC "

    l'erreur se situe sur la ligne:
    xlSheet.Cells(y + 2, x + 1) = DataGrid1.Item(y, x)
    comprise dans la deuxième boucle FOR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            SaveFileDialog1.ShowDialog()
            Dim xlApp As Microsoft.Office.Interop.Excel.Application
            Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
            Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
     
            xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
            xlBook = CType(xlApp.Workbooks.Add, Microsoft.Office.Interop.Excel.Workbook)
            xlSheet = CType(xlBook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet)
     
            ' ici on compte le nombre de lignes et de colonnes du datatable
            Dim nbrLigne As Integer = Copie_de_TEST_odbc_2DataSet.Tables(0).Rows.Count - 1
            Dim nbrColon As Integer = Copie_de_TEST_odbc_2DataSet.Tables(0).Columns.Count - 1
            Dim x, y As Integer
     
            For x = 0 To nbrColon
                ' ici on prends le titre des colonnes du datatable
                xlSheet.Cells(1, x + 1) = Copie_de_TEST_odbc_2DataSet.Tables(0).Columns(x).ColumnName
                ' on mets la première ligne en gras
                xlSheet.Rows(1).Font.Bold = True
     
                ' pour chaque colonne et chaque ligne on transfert les données      
                For y = 0 To nbrLigne
                    xlSheet.Cells(y + 2, x + 1) = DataGrid1.Item(y, x)
                Next
            Next
     
     
            ' ici on affiche les résultat dans excel
            xlSheet.Application.Visible = True
            ' on peut sauvegarder notre document sur le disque
            xlSheet.SaveAs("C:\nom_document.xls")
            ' on quitte l'application et on détruit les objets
            xlApp.Quit()
            xlSheet = Nothing
            xlBook = Nothing
            xlApp = Nothing
        End Sub
    Il trouve tout de même le bon nombre de lignes et colonnes et sa fonctionne bien lorsque je fait un test d'affichage:
    Label1.Text = Copie_de_TEST_odbc_2DataSet.Tables(0).Rows(0).Item(0, DataRowVersion.Default)

    je suis un peu perdu

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Par défaut Boucle sur une Dataset
    --

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut Meme PB
    Voici mon code:

    Cells(NbLignes + 1, 15).FormulaR1C1 = "=SUM(R[-" & NbLignes - 1 & "]C:R[-1]C)"

    C'est une formule sous excel,elle fonctionne correctement sous Excel en VBA mais avec VB2005E,cela ne fonctionne pas,le meme code d'erreur que toi.
    Donc si tu as trouvé une solution,ça m'interesse.
    Le probleme se trouve sur la formule car la meme ligne avec ="ABC" et ça passe donc mistère !!!

  5. #5
    Invité de passage
    Inscrit en
    Décembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1
    Par défaut
    Salut tout le monde

    Pour moi Il n'accepte pas les Excel.Application, Excel.workbook et Excel.worksheet
    SVP réponde moi comment ivette ces erreurs
    MERCI a l'avence

  6. #6
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    en haut de ta page de code ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Imports Microsoft.Office.Interop
    sinon j'ai un autre code qui pourrait t'interesser, il est vraiment mieux que l'autre quand tu as un grand nombre de ligne à exporter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Dim xlApp As Excel.Application
            Try
                xlApp = GetObject(, "excel.application")
            Catch
                xlApp = New Excel.Application
            Finally
                xlApp.Visible = False
            End Try
     
            'ajout d'une page et sélection 
            Dim xsSoldesComptes5 As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet
            'requete serveur 
            Try
                With xsSoldesComptes5.QueryTables.Add(Connection:= _
                "ta chaine de connexion vers la base access" _
                , Destination:=xsSoldesComptes5.Range("A1"))
     
                    .CommandText = "requete select * from machin where .."
                    .Name = "SoldesComptes5"
                    .FieldNames = True
                    .RowNumbers = True
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .BackgroundQuery = True
                    .RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
                    .SavePassword = False
                    .SaveData = False
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .PreserveColumnInfo = True
                    .Refresh(BackgroundQuery:=False)
                End With
                ' affichage 
                xlApp.Visible = True
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

Discussions similaires

  1. Exportation d'un DataSet Vers Excel
    Par icemc68 dans le forum C#
    Réponses: 9
    Dernier message: 23/11/2010, 11h08
  2. Exporter un datagrid ou dataset vers excel
    Par patsolaar dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/07/2008, 21h55
  3. [VB.NET] Exporter un datagrid vers Word ou Excel
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/09/2006, 12h52
  4. [VB.NET] Transférer les données d'un dataset vers excel ??
    Par beegees dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/06/2006, 18h59
  5. export de requete vers excel(pb de mise en forme)
    Par syl221 dans le forum Access
    Réponses: 13
    Dernier message: 20/10/2004, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo