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 :

Exporter un gridView vers un fichier excel


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut Exporter un gridView vers un fichier excel
    Bonjour,

    Je souhaiterais exporter un gridview vers un fichier excel a click d'un bouton, mais je n'arrive pas a trouver comment faire en VB.NET!

    J'ai beau googler depuis quasiment 2h, je n'avance pas

    Quelqu'un aurait-il une solution?

    Pour le moment, mon code est
    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
      Protected Sub BExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BExcel.Click
            ' On efface les éventuelles données déjà dans la mémoire tampon
            Response.Clear()
            ' On place tout ce qui est destiné au client dans la mémoire tampon
            Response.Buffer = True
            ' On définit le type d'informations renvoyée, ici des données au format Excel
            Response.ContentType = "application/vnd.ms-excel"
            ' On efface le jeu de caractères actuellement défini
            Response.Charset = ""
            ' On instancie deux objets qui vont nous permettre de récupérer les données du DataGrid : 
            ' le StringWriter et l'HtmlTextWriter
            Dim myStringWriter As IO.StringWriter = New IO.StringWriter
            Dim myHtmlTextWriter As HtmlTextWriter = New HtmlTextWriter(myStringWriter)
            ' On extrait le contenu du DataGrid dans l'HtmlTextWriter
            GridView1.RenderControl(myHtmlTextWriter)
            ' On copie le contenu extrait dans la mémoire tampon
            Response.Write(myStringWriter.ToString())
            ' On ferme "le flux" de données et envoie les données au client
            Response.End()
        End Sub
    Mais je me fait jeter par "Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server. "
    Or, je suis dans ce tag!

    Il existe une autre solution mais je n'arrive même pas a creer un dataset!


  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Si Google ne peut pas t'aider, alors regarde sur developpez.com :

    http://faqvbnet.developpez.com/?page...dgrid_to_excel

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut
    ben oui, j'avais vu aussi, mais je pars d'un gridview et non d'un datafrid (la nuances est un peu floue pour moi)... toujrs est-il qu'en suivant le tuto de la faq, je me fais jeter aussi!

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Je pense que tu pourras trouver des infos sur la MSDN au sujet de la différence entre un GridView et un DataGrid :
    http://msdn2.microsoft.com/fr-fr/lib...ew(VS.80).aspx
    Citation Envoyé par MSDN
    Remarque :
    Si vous connaissez bien le contrôle DataGrid à partir de la version 1.0 du .NET Framework, le contrôle GridView succède au contrôle DataGrid.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut
    ok, donc le gridview est le datagrid du framework 2.0
    Je n'arrive pas a exporter en changeant le nom de datagrid en gridview, je vais fouiller plus precisement
    (Et merci à toi, Skalp, de m'aider sur mes deux problemes )

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    As-tu utilisé un DataSet et un DataTable comme indiqué dans la réponse de la FAQ ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut
    ouf, j'ai resolu le probleme, je pense que "comme un gros sale" est une expression qui correspondrait!
    Pour ceux que ca interessent :
    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
       Protected Sub BExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BExcel.Click
            Dim r As Integer
            Dim c As Integer
            Dim sLine As String
     
            Response.Clear()
            Response.AddHeader("content-disposition", "attachment; filename=Mod_Tools_Downloads.xls")
            Response.Charset = ""
     
            ' If you want the option to open the Excel file without saving than comment out the line below
            Response.Cache.SetCacheability(HttpCacheability.NoCache)
            Response.ContentType = "application/vnd.ms-excel"
            Response.ContentEncoding = System.Text.Encoding.Default
     
            sLine = ""
            For c = 0 To GridView1.Columns.Count - 1
                sLine += GridView1.Columns(c).HeaderText & Chr(9)
            Next
            Response.Write(sLine)
            Response.Write(vbCrLf)
            For r = 0 To GridView1.Rows.Count - 1
                sLine = ""
                For c = 0 To GridView1.Columns.Count - 1
                    sLine += clearToExcel(GridView1.Rows(r).Cells(c).Text) & Chr(9)
                Next
                Response.Write(sLine)
                Response.Write(vbCrLf)
            Next
     
            Response.End()
        End Sub
    Avec la fonction clear to excel pour gerer les blancs et les caracteres speciaux
    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
        Private Function clearToExcel(ByVal sValue As String) As String
            Dim sOut As String = sValue
     
            sOut = sOut.Replace("&", "&")
            sOut = sOut.Replace(" ", " ")
     
            ' Gestion des accents
            Dim iDbt As Integer = sOut.IndexOf("&#")
            If iDbt <> -1 Then
                Dim iFin As Integer = sOut.IndexOf(";", iDbt)
                Dim sASC As String
                While iDbt <> -1 And iFin <> -1 And (iFin - iDbt + 1) <= 6
                    sASC = sOut.Substring(iDbt + 2, iFin - iDbt - 2)
                    sOut = sOut.Replace("&#" & sASC & ";", Chr(CInt(sASC)))
                    iDbt = sOut.IndexOf("&#")
                    If iDbt <> -1 Then
                        iFin = sOut.IndexOf(";", iDbt)
                    End If
                End While
            End If
     
            Return sOut
        End Function


  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Real XML/XLSX export to Excel
    If you really need a fast export (I mean many thousands of records) to Excel you must export in XML format for Excel 2003 or XLSX format for Excel 2007. I suggest you to try http://www.gridviewtoexcel.com

    Regards

    Ettore

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

Discussions similaires

  1. Exporter un gridview vers un fichier excel
    Par SonnyFab dans le forum ASP.NET
    Réponses: 59
    Dernier message: 30/07/2010, 12h22
  2. Export de tables vers plusieurs fichiers excel
    Par miniquick dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/07/2007, 00h11
  3. Réponses: 3
    Dernier message: 06/01/2007, 17h44
  4. export d'access vers un fichier excel prédéfini
    Par kuhnden dans le forum Access
    Réponses: 3
    Dernier message: 05/01/2006, 22h08
  5. [Excel] PHP-MYSQL exportation de données vers un fichier excel
    Par toure32 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/10/2005, 19h29

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