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

VB.NET Discussion :

Datagrid vers Excel


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut Datagrid vers Excel
    Bonjour, je cherche à transférer mes données d'un datagridview vers un fichier excel sans succès. j'utilise le code présent dans la FAQ mais j'ai un message qui m'indique que mon index est hors limite... voici mon code :
    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
    40
     
            Try
                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 = ds.Tables("generique").Rows.Count - 1
                Dim nbrColon As Integer = ds.Tables("generique").Columns.Count - 1
                Dim x, y As Integer
     
                MsgBox("Nombre de colonnes dans la table : " & nbrColon)
                MsgBox("Nombre de lignes dans la table : " & nbrLigne)
                For x = 0 To nbrColon + 1
                    ' ici on prends le titre des colonnes du datatable
                    xlSheet.Cells(1, x + 1) = ds.Tables("generique").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 = 1 To nbrLigne
                        xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(y, x).Value
                    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
            Catch ex As System.SystemException
                MsgBox(ex.ToString)
            Finally
            End Try
    Merci d'avance de votre aide

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !
    Je ne voudrais pas m'avancer, mais il y a un passage qui me semble suspect :
    Dim nbrColon As Integer = ds.Tables("generique").Columns.Count - 1
    [...]
    For x = 0 To nbrColon + 1
    [...]
    ds.Tables("generique").Columns(x).ColumnName

    Lors du dernier passage de boucle, tu dépasses de 1 la taille du tableau, non ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut
    Exact j'ai effectué quelques modifs car j'avais ce fameux problème de dépassement, voici avec correction mais toujours le même problème :
    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
                ' ici on compte le nombre de lignes et de colonnes du datatable
                Dim nbrLigne As Integer = ds.Tables("generique").Rows.Count - 1
                Dim nbrColon As Integer = ds.Tables("generique").Columns.Count - 1
                Dim x, y As Integer
     
                MsgBox("Nombre de colonnes dans la table : " & nbrColon)
                MsgBox("Nombre de lignes dans la table : " & nbrLigne)
                For x = 0 To nbrColon
                    ' ici on prends le titre des colonnes du datatable
                    xlSheet.Cells(1, x + 1) = ds.Tables("generique").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) = DataGridView1.Item(y, x).Value
                    Next
                Next

  4. #4
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    J'ai peut être une hypothèse :
    Pour fixer les compteurs, tu prends fais référence à la datatable,
    alors que pour chercher les valeurs, tu fais référence à la DataGrid.

    Il y a peut être une différence du type le nombre de ligne de la datagrid ne comprend que les lignes affichées...

Discussions similaires

  1. exportation datagrid vers excel
    Par solid_sneak06 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 10/10/2007, 17h06
  2. exporté les donnees du datagrid vers excel
    Par bicho dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/09/2007, 18h28
  3. Export Datagrid vers Excel
    Par DocCoinCoin dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2007, 00h06
  4. [C#] De DataGrid vers Excel
    Par Nadaa dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2004, 10h14
  5. [C#] Sauvegarde DataGrid vers Excel
    Par royrremi dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/06/2004, 20h14

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