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

ASP.NET Discussion :

Exporter un gridview vers un fichier excel


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut Exporter un gridview vers un fichier excel
    Bonjour,

    J'ai créé ma première gridView (Merci encore à Cortex et Primactif...)
    Elle s'affiche au lancement de la page c'est génial (Et dire que j'ai pas encore découvert tous ses secrets "Wohou j'en ai meme des frissons" ) Bref
    Voila j'aimerais (faut dire que j'ai beaucoup cherché) avoir une fonction qui, lors du clic me créé un fichier excel dans le repertoire courant(codebehind oust!), tous les codes que j'ai éssayé me génère des erreurs à cause de code behind, c'est pourquoi j'aimerais que la fonction soit dans la meme page, 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
    sub bouton (ByVal sender As System.Object, ByVal e As System.EventArgs)
     
    'code qui crée le fichier excel qui n existe pas dans le repertoire courant '
     
    end sub
    </script>
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head
    <body>
    <form runat="server">
     <asp:SqlDataSource id="SqlDataSource1"
              runat="server"
              DataSourceMode="DataReader"
              ConnectionString="user id=sa;password=toto;
               database=MaBase;server=MonServer;"
              SelectCommand="SELECT * FROM MaTable">
          </asp:SqlDataSource>
     
          <asp:GridView
              id="GridView1"
              runat="server"  
              DataSourceID="SqlDataSource1">
          </asp:GridView>
    <asp:Button id="btn" onclick="bouton" runat="server" text="CreationExcel"></asp:Button>
    </body>
    </html>
    Si vous avez des tutos qui peuvent répondre à ma préocupation (Le plus simplement possible) je suis preneur...

    Une fois la base acquise, la complication et la merveille viennent de nous!
    Merci de m'aider.

  2. #2
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    J'ai eu cette fonction :
    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
    Dim control As Control
    Dim instance As Page
     
     sub bouton1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)
     
        Response.Clear()
     
        Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
        Response.Charset = ""
        Response.ContentType = "Application/vnd.xls"
     
     
        Dim sw as new System.IO.StringWriter() 
       Dim hw As new HtmlTextWriter(sw)
        GridView1.RenderControl(hw)
     
        Response.Write(sw.ToString)
        Response.End()
    	instance.VerifyRenderingInServerForm(control)
     
    end sub
    Il n'y a pas d'erreurs mais le fichier excel ne se crée pas lors du click, Pouvez-vous m'éclaircir s'il vous plait?

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Pouvez-vous m'éclaircir s'il vous plait?

  4. #4
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Alors vous ne manquez pas d'humour!
    Très drole
    Non sans blague depuis hièr j'arrête pas de chercher des tutos, des codes par 'ci par là, et là j'en ai un qui compile bien sans erreurs mais sa ne me génère pas de fichier excel pourtant le gridview s'affiche bien...

  5. #5
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    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
     <%@ import Namespace= "System.Data" %> 
    <%@ import Namespace= "System.Data.SqlClient" %> 
    <%@ import Namespace= "System.IO" %>
     
    <script language= "VB" runat= "server" >
     
     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)   
            ' Clear the response   
            Response.Clear()   
     
            ' Set the type and filename   
            Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")   
            Response.Charset = ""  
            Response.ContentType = "application/vnd.xls"  
     
            ' Add the HTML from the GridView to a StringWriter so we can write it out later   '
            Dim sw As System.IO.StringWriter = New System.IO.StringWriter   
            Dim hw As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(sw)   
            GridView1.RenderControl(hw)   
     
            ' Write out the data   '
            Response.Write(sw.ToString)   
            Response.End()   
        End Sub  
     
        Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)   
     
        End Sub  
    </script>
     
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head
     
    <body>
    <form runat="server">
     <asp:SqlDataSource id="SqlDataSource1"
              runat="server"
              DataSourceMode="DataReader"
              ConnectionString="user id=sa;password=toto;
               database=MaBase;server=MonServer;"
              SelectCommand="SELECT * FROM dbo.IT_CommunautySynch">
          </asp:SqlDataSource>
     
          <asp:GridView
              id="GridView1"
              runat="server"  
              DataSourceID="SqlDataSource1">
          </asp:GridView>
     
    <asp:Button id="btn" on
    click="bouton1_Click" runat="server" text="CreationExcel"></asp:Button>
     
    </form></body>
    Bien entendu il me manque quelque chose puisqu'il n'y a pas d'erreurs mais que le fichier ne se crée pas. S'il vous plait!
    Merci d'avance

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Bonjour,

    Je vous conseille de mettre des points d'arrêts sur votre code et de le débogguer.

  7. #7
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Bonjour M. Lucetefalco
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridView1.RenderControl(oHtmlTextWriter)
    Avec ce code je recupère les données de la Gridview, et avec cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
            ExportToExcel("C:\Inetpub\wwwroot\Report.xls", GridView1)
        End Sub
    Je spécifie l'endroit où j'aimerais créer mon fichier pourtant il ne se crée pas du coup t'as raison quand tu dis:
    Ton code n'est pas fait pour créer un fichier
    Quesque j'ai oublié d'écrire stp?

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Quesque j'ai oublié d'écrire stp?
    Regarde le code que t'as trouvé et essaye de voir le problème au lieu de copier/coller du code sans chercher à comprendre

  9. #9
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		Dim MonFichier As IO.FileStream = New IO.FileStream("C:\Inetpub\wwwroot\Report.xls", IO.FileMode.OpenOrCreate)
     
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = ""
            Me.EnableViewState = False
            Dim oStringWriter As New System.IO.StringWriter
            Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
     
     
            GridView1.RenderControl(oHtmlTextWriter)
     
            Response.Write(oStringWriter.ToString())
     
    		MonFichier.Dispose()
    Je me suis rendu compte que le fichier n'était pas créer alors je le créé, puis à la fin de la fonction ExportToExcel() je ferme le fichier
    MonFichier.Dispose()
    Dim MonFichier As IO.FileStream = New IO.FileStream("C:\Inetpub\wwwroot\Report.xls", IO.FileMode.OpenOrCreate)

    Mais je me pose la question comment dire à la fonction de remplir monFichier de la gridView?
    Voici mon éternel erreur quand je lance la fonction:
    Le contrôle 'GridView1' de type 'GridView' doit être placé dans une balise form avec runat=server.

  10. #10
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Le processus ne peut pas accéder au fichier 'C:\Inetpub\wwwroot\Report.xls', car il est en cours d'utilisation par un autre processus
    Malgré cela mon fichier est quand meme créé mais il est vide (la gridview ne l'a pas rempli) et excel me dit qu'il est en pleine utilisation:
    J'ai placé la foncrion dispose() pour le fermer aussito créer mais je sais pas pourquoi!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MonFichier As IO.FileStream = New IO.FileStream("C:\Inetpub\wwwroot\Report.xls", IO.FileMode.OpenOrCreate)
    		MonFichier.Dispose()

  11. #11
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Exusez moi pour ceux qui ont deja lu ce tutoriel, celui-ci ne cré pas le fichier (c'est à dire nous devrions le faire nous mêmes ou bien...)

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

Discussions similaires

  1. Exporter un gridView vers un fichier excel
    Par arnogb69 dans le forum VB.NET
    Réponses: 7
    Dernier message: 15/01/2008, 17h37
  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