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 :

DataGridView vers Excel


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    BTS SIO SISR
    Inscrit en
    Décembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : BTS SIO SISR
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2015
    Messages : 20
    Par défaut DataGridView vers Excel
    Bonjour à tous,

    Je suis en train d'essayer d'exporter les données d'un datagridview vers un fichier excel (en VB.Net / Winform). J'ai donc dans un premier temps regarder sur le net pour voir ce qui se fessait et comment cela était gérer, j'ai donc vu que on devais Ajouter la référence correspondant à Excel au projet. J'ai donc fait ceci (Microsoft Excel 16.0 Object Library), puis j'ai crée un BTN qui s'occupera de l'export en Excel.

    J'ai donc trouver sur le MSDN un code source, j'ai regarder, donc mon DataGridView se nomme "Tab", j'ai bien ajouter la référence. Dans un premier temps le DGV se rempli avec les 3 valeurs des boissons, puis via un BTN je souhaite l'enregistrer en Excel

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Public Class Direct
     
        Private Sub Direct_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            Dim Coca As String() = {"Coca-Cola", "1,50", Stock.Stock_CocaCola, ASCourdimanche.VenteTotal_CocaCola, ASCourdimanche.VenteTotal_CocaCola * 1.5}
            Tab.Rows.Add(Coca)
            Dim IceTea As String() = {"Ice-Tea", "1,50", Stock.Stock_IceTea, ASCourdimanche.VenteTotal_IceTea, ASCourdimanche.VenteTotal_IceTea * 1.5}
            Tab.Rows.Add(IceTea)
            Dim Orangina As String() = {"Orangina", "1,50", Stock.Stock_Orangina, ASCourdimanche.VenteTotal_Orangina, ASCourdimanche.VenteTotal_Orangina * 1.5}
            Tab.Rows.Add(Orangina)
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ' Creating a Excel object.
            Dim excel As Microsoft.Office.Interop.Excel._Application = New Microsoft.Office.Interop.Excel.Application()
            Dim workbook As Microsoft.Office.Interop.Excel._Workbook = excel.Workbooks.Add(Type.Missing)
            Dim worksheet As Microsoft.Office.Interop.Excel._Worksheet = Nothing
     
            Try
     
                worksheet = workbook.ActiveSheet
     
                worksheet.Name = "ExportedFromDatGrid"
     
                Dim cellRowIndex As Integer = 1
                Dim cellColumnIndex As Integer = 1
     
                'Loop through each row and read value from each column.
                For i As Integer = 0 To Tab.Rows.Count - 2
                    For j As Integer = 0 To Tab.Columns.Count - 1
                        ' Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
                        If cellRowIndex = 1 Then
                            worksheet.Cells(cellRowIndex, cellColumnIndex) = Tab.Columns(j).HeaderText
                        Else
                            worksheet.Cells(cellRowIndex, cellColumnIndex) = Tab.Rows(i).Cells(j).Value.ToString()
                        End If
                        cellColumnIndex += 1
                    Next
                    cellColumnIndex = 1
                    cellRowIndex += 1
                Next
     
                'Getting the location and file name of the excel to save from user.
                Dim saveDialog As New SaveFileDialog()
                saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*"
                saveDialog.FilterIndex = 2
     
                If saveDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                    workbook.SaveAs(saveDialog.FileName)
                    MessageBox.Show("Export Successful")
                End If
            Catch ex As System.Exception
                MessageBox.Show(ex.Message)
            Finally
                excel.Quit()
                workbook = Nothing
                excel = Nothing
            End Try
     
        End Sub
     
     
    End Class

    Seulement quand je lance le programme et que je clique sur le BTN, il ne se passe rien logiquement une fenêtre de sauvegarde devrait s'afficher... Quelqu'un aurais une idée ?

    Merci de votre aide

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si l'exemple de MSDN dont tu parles c'est celui-ci, je ne peux que te dire qu'il fonctionne chez-moi.

    Apparemment, c'est l'implantation dans ton propre code qui poserait problème.

    Si ce n'est pas la bonne adresse du site de MSDN, ce serait intéressant que tu fournisses la bonne adresse et/ou ton code complet; au besoin, avec quelques données maquillées, si jamais elles étaient confidentielles.

    Parce que là, cela ne semble pas être le code du bouton.

    Ou bien, tu peux toujours essayer d'exécuter le code du bouton au pas-à-pas en espionnant tes variables.

  3. #3
    Membre averti
    Homme Profil pro
    BTS SIO SISR
    Inscrit en
    Décembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : BTS SIO SISR
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2015
    Messages : 20
    Par défaut
    Bonsoir,

    Oui c'était bien de cette page là que je parlais. Après une mise à jour de Visual Studio (Manquait le SDK Windows 10).

    J'ai régénéré le projet (le bouton ne s’actualisait pas) et tout fonctionne l'export vers Excel fonctionne.


    Merci de votre intervention rapide !

    Bonne soirée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Export de données DataGridview Vers Excel
    Par Le gris dans le forum C#
    Réponses: 3
    Dernier message: 28/06/2012, 11h38
  2. Exporter le contenu d'un DataGridView vers Excel
    Par David Fouejio dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/05/2010, 11h50
  3. Datagridview vers excel
    Par urbanspike dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/06/2009, 11h03
  4. Problème d'export de datagridview vers excel
    Par holdboy dans le forum C#
    Réponses: 2
    Dernier message: 15/06/2009, 22h54
  5. Exporter une dataGridView vers Excel
    Par drayif dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/08/2007, 18h45

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