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 dans une feuille excel


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut Exporter un gridview dans une feuille excel
    Bonjour,

    Je cherche à exporter un grid view dans une document excel.
    J'ai suivi le tuto sur le site mais je me retrouve avec une erreur dont je ne comprend pas l'origine.
    Control 'gvwExistingRight' of type 'GridView' must be placed inside a form tag with runat=server.
    Il place l'erreur sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gvwExistingRight.RenderControl(oHtmlTextWriter);
    Or voici ma page aspx:
    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
    <form id="form1" runat="server">
     
    <asp:GridView ID="gvwExistingRight" runat="server" AutoGenerateColumns="False" AllowPaging="False"
    DataKeyNames="VAL" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"
    BorderWidth="0px" ShowFooter="True" CellPadding="4" ForeColor="Black" GridLines="Horizontal"
    OnRowEditing="gvwExistingRight_RowEditing" OnRowCancelingEdit="gvwExistingRight_RowCancelingEdit"
    OnRowDeleting="gvwExistingRight_Delete" OnRowUpdating="gvwExistingRight_RowUpdating"
    OnRowDataBound="gvwExistingRight_RowDataBound" Width="100%">
    <RowStyle Font-Names="Arial" Font-Size="XX-Small" />
    <Columns>
    	<asp:TemplateField HeaderText="Domain" SortExpression="Domain">
    		<ItemTemplate>
    			<asp:Label ID="lblDomain" runat="server" Text='<%#Eval("DOM") %>'></asp:Label>
    		</ItemTemplate>
    	</asp:TemplateField>
     
    	[...] // Je vous fais grace des 13 colonnes
     
    	<asp:TemplateField HeaderText="Edit" ShowHeader="False">
    		<EditItemTemplate>
    			<asp:LinkButton ID="lbn1" runat="server" CausesValidation="True" CommandName="Update"
    				Text="Update"></asp:LinkButton>
    			<asp:LinkButton ID="lbn2" runat="server" CausesValidation="False" CommandName="Cancel"
    				Text="Cancel"></asp:LinkButton>
    		</EditItemTemplate>
    		<ItemTemplate>
    			<asp:LinkButton ID="lbn1" runat="server" CausesValidation="False" CommandName="Edit"
    				Text="Edit"></asp:LinkButton>
    		</ItemTemplate>
    	</asp:TemplateField>
    	<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" ShowHeader="True" />
    </Columns>
    <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="left" />
    <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#CCCCCC" Font-Bold="True" HorizontalAlign="left" Font-Names="Arial"
    	Font-Size="X-Small" ForeColor="White" />
    <RowStyle Font-Names="Arial" Font-Size="XX-Small" HorizontalAlign="left" />
    <AlternatingRowStyle BackColor="#F2F2F2" />
    </asp:GridView>
    <br />
    <asp:ImageButton ID="ibnGridViewToExcel" runat="server" Height="24px" 
    ImageUrl="~/images/BUTTON/icone-excel.jpg" OnCommand="ibnGridViewToExcel_Click" 
    Text="Export to Excel" Width="24px" />
    </form>
    Mon gridview est alimenté par une fonction dans le codebehind.
    Voici le code pour l'export:
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
     protected void ibnGridViewToExcel_Click(object sender, System.EventArgs e)
            {
                //export to excel
     
                //On appelle de verifColonne avec le nom du DataGrid concerné en paramètre
                ClearControls(gvwExistingRight);
                //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 jeux 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
                EnableViewState = false;
                StringWriter oStringWriter = new StringWriter();
                HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
                // On extrait le contenu du DataGrid dans l'HtmlTextWriter
                gvwExistingRight.RenderControl(oHtmlTextWriter);
                //On copie le contenu extrait dans la mémoire tampon
                Response.Write(oStringWriter.ToString());
                //On ferme "le flux" de données et envoie les données au client
                Response.End();
            }
     
     
            private void ClearControls(Control control)
            {
                //On récupère le nombre de controles enfants composant le DataGrid
                for (int i=control.Controls.Count -1; i>=0; i--)
                {
                    ClearControls(control.Controls[i]);
                }
                //Si la cellule ne contient pas du texte simple 
                if (!(control is TableCell))
                {
                    //Si le controle concerné à une prorpiété "Selected Item" alors...
                        //Remarque : Seul les controles offrant des choix multiples ont une propriété "SelectedItem"
                    if (control.GetType().GetProperty("SelectedItem") != null)
                    {
                        LiteralControl literal = new LiteralControl();
                        control.Parent.Controls.Add(literal);
                        try
                        {
                            //La cellule prend alors pour valeur le texte correspondant à la propriété "SelectedItem"
                            literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
                        }
                        catch
                        {
                            //On récupère l'exception en cas de problème
     
                        }
                        //Le controle concerné est retiré
                        control.Parent.Controls.Remove(control);
                    }
                else 
                    //Si le controle concerné n'a pas de propriété "SelectedItem" alors on récupère le 
                    //texte (s'il y en a un) de sa propriété "Text"
     
                    if (control.GetType().GetProperty("Text") != null)
                    {
                        LiteralControl literal = new LiteralControl();
                        control.Parent.Controls.Add(literal);
                        //On attribue le texte de la propriété "Text" à la cellule concernée
                        literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
                        control.Parent.Controls.Remove(control);
                    }
                }
                return;
            }
    J'ai remis les commentaires du tuto pour aller plus vite à la lecture !!
    Voilà, si vous avez une idée ... à votre bon coeur messieurs dames !!

    Merci à vous !!

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    Ok,
    Vous pouvez laisser tomber j'ai trouvé !!
    Pour info, il faut rajouter ceci dans le codebehind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            public override void VerifyRenderingInServerForm(Control control)
            {
            }
    Et hop plus d'erreur !!

    Merci à vous !!

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Salut moi j'ai fais un grid view plus simple:
    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
     
     <form id="from1" method="post" runat="server">
      <asp:Button ID="btn" runat="server" Text="Exporter vers Excel" Visible="true" OnClick="ibnGridViewToExcel_Click"></asp:Button>
     
      <br/><br/>
     
      <asp:GridView ID="GVClients" runat="server" AutoGenerateColumns="true"  DataSourceID="SqlClients">
     
    </asp:GridView>
     
       <asp:SqlDataSource id="SqlClients"
              runat="server"
              ConnectionString="user id=sa;password=toto;
               database=MSIDB;server=blabla;"
    		    SelectCommand="SELECT mob FROM IT_ALLCOMMUNAUTERS where client='ART'"/>
          </asp:SqlDataSource>
     
      </form>
    Et j'utilise le code c# ci dessus, mais à ma grande surprise le format de la feuille excel n'est pas en text!!

    Comme j'ai des mobiles qui commence par 0, tous les premeirs chiffres alors sont homis!!!

    Pouvez vous m'aidez s'il vous plait

    Merci

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    J'ai vérifier le type des valeurs dans ma base.
    Comme j'ai sql les valeurs sont en varchar.

    Donc le problème du format vient du code mais je comprends pas pourquoi
    les cellules ne sont pas en format texte.

    Pourtant ce code à l'air bon:
    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
    private void ClearControls(Control control)
            {
                //On récupère le nombre de controles enfants composant le DataGrid
                for (int i=control.Controls.Count -1; i>=0; i--)
                {
                    ClearControls(control.Controls[i]);
                }
                //Si la cellule ne contient pas du texte simple 
                if (!(control is TableCell))
                {
                    //Si le controle concerné à une prorpiété "Selected Item" alors...
                        //Remarque : Seul les controles offrant des choix multiples ont une propriété "SelectedItem"
                    if (control.GetType().GetProperty("SelectedItem") != null)
                    {
                        LiteralControl literal = new LiteralControl();
                        control.Parent.Controls.Add(literal);
                        try
                        {
                            //La cellule prend alors pour valeur le texte correspondant à la propriété "SelectedItem"
                            literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
                        }
                        catch
                        {
                            //On récupère l'exception en cas de problème
     
                        }
                        //Le controle concerné est retiré
                        control.Parent.Controls.Remove(control);
                    }
                else 
                    //Si le controle concerné n'a pas de propriété "SelectedItem" alors on récupère le 
                    //texte (s'il y en a un) de sa propriété "Text"
     
                    if (control.GetType().GetProperty("Text") != null)
                    {
                        LiteralControl literal = new LiteralControl();
                        control.Parent.Controls.Add(literal);
                        //On attribue le texte de la propriété "Text" à la cellule concernée
                        literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
                        control.Parent.Controls.Remove(control);
                    }
                }
                return;
            }
    Je suis préneur de toute idée qui peut m'aider

    Merci

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut Problème de format de cellules
    Resalut,
    une fois Nicolas Esprit m'avait demandé d'utiliser le css pour changer le format, c'est vrai j'avais pas encore ce nouveau code.

    Mais sinon pour vous expert, pour changer le format de mes cellules dois-je forcement toucher au css (Dans mon cas) ou avec ce code rajouter juste quelques instructions?

    Honnement sa m'étonne que personne n'a déja eu ce problème de fromat.

    Merci pour votre attention

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    Avec ce code, on ne fait que parcourir chaque contrôle contenu dans le gridview et si le contrôle n'est pas un simple label, récupérer la valeur du control pour la saisir dans un nouveau label (par sa propriété .Text) créé pour l'occasion.
    A aucun moment on ne touche au format de la valeur remonté dans le gridview.

    Je pencherai plutôt pour Excel qui va attribuer de lui même un format à la valeur renvoyé par le code.
    Si celui ci voit que la valeur ne contient que des chiffres, il va de lui même appliqué le format numérique sur la cellule ou celle ci sera stockée avec pour résultat la suppression des zéros en début de chaîne.

    Vérifie le format de la cellule dans laquelle sont enregistré tes valeurs, si c'est un format numérique, c'est que c'est bien Excel qui merdoie.

    L'astuce serai de mettre une petit apostrophe devant tes valeurs avant de les passer dans Excel, comme ceci: (je n'ai pas testé ce code, mais ca pourrais marcher)
    pour le cas ou se serai un contrôle à choix multiple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    literal.Text = "'" + (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
    et pour le cas ou se ne serai pas un contrôle à choix multiple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    literal.Text = "'" + (string)control.GetType().GetProperty("Text").GetValue(control,null);
    Essai toujours et fais moi un retour, je suis curieux ...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Je ne te suis pas quand tu parles de:
    pour le cas ou se serai un contrôle à choix multiple
    Moi j'ai affiché un gridview assez simple, genre connexion -> requete -> affichage de la colonne.

    Mais quoicqu'il en soit j'ai éssayé les 2 codes que t'as posté, que dale! les zéros sont toujours homis.

    Aussi je pense que t'as raison c'est excel qui merdoie parceque mes données sont en varchar sous sql et c'est vrai il n'y a que des mobiles dans cette colonne.

    Merci de ton aide

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    Dans le bout de code, le "cas choix multiples" correspond a la partie de la fonction qui parcours les contrôles présents dans le gridview et selon le controles (dropdownlist -> choix multiple) applique la méthode de récupération de la valeur correspondante.

    L'astuce pour résoudre ton problème avec excel serai de lui faire comprendre que ta valeur doit rester une chaine de caractère. Sous excel, la méthode la plus courante est de mettre un petit ' avant une valeur numérique. A l'affichage, Excel cachera le ' pour affichera celle ci sans la convertir au format numérique.
    C'est une piste à suivre.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Ah ok je vois mais j'ai mis ' dans le code comme tu m'as conseillé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    literal.Text = "'"+(string)control.GetType().GetProperty("Text").GetValue(control, null);
    // Je t'épargnes le reste du code
     
    literal.Text = "'" +(string)control.GetType().GetProperty("Text").GetValue(control,null);
    Mais malgré cela les zéros sont toujours homis.

    J'aurais bien voulu mettre ces ' depuis la souce de donnée en base mais elles sont sur un server et dans ce cas ce ne serait plus des mobiles si tu vois ce que je veux dire...

    Je te jure sa me prend la tête grave!!

    Mais dis quand t'exportes chez toi une table qui a des 0 devant esque les 0 sont homis?

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    Je n'ai pas le cas de valeur numérique avec 0 en première place. (J'ai des dates par contre au format US convertis au format français au moment du chargement de la feuille Excel, mais bon rien a voir)


    Juste pour tester, as tu essayé de mettre un caractère (genre @) comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    literal.Text = "@" +(string)control.GetType().GetProperty("Text").GetValue(control,null);
    Pour voir ce qu'il fait ?
    Pour savoir si il concatène bien les deux chaines de caractère auquel cas, je pense qu'il te faudra faire quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
    literal.Text = "@" + literal.Text.ToString();

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Ouais et toujours rien!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control, null);
    literal.Text = "@" + literal.Text.ToString();
    Dis moi pour mieux aider parceque là c'est toi qui bosses seul

    Tu peux m'expliquer un peu ce que cette fonction private void ClearControls(Control control) fait normalement s'il te plait!

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Par défaut
    La fonction ClearControls va parcourir le contrôle passé en paramètre à la recherche des controls contenus ou non dans celui ci.
    Dans notre cas, nous parcourons en premier le Gridview et recherchons dedans les controls que celui a.
    Si nous tombons sur un control qui contient lui aussi d'autre controls (comme un Repeater par exemple), nous rappelons la fonction pour parcourir celui ci.
    C'est la premiere etape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i=control.Controls.Count -1; i>=0; i--)
                {
                    ClearControls(control.Controls[i]);
                }
    Etape suivante, On vérifie que le control contient du text simple ou non
    Si ce n'est pas du text simple, mais un tableau de valeur (cas de dropdownlist, listbox, etc ...) on va rechercher la valeur de la propriété SelectedItem du control et la mettre dans un Label et on "retire" le control concerné du gridview.
    Sinon on récupère le texte du controls.

    L'objectif de cette fonction est de ne garder que des labels afin de n'avoir à envoyé que des cellules contenant du texte à Excel.

    Si tu as un simple GridView, tu peux très bien te passer de la fonction.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Ok je vois donc cela revient à la fonction que j'avais déja de mon coté!
    Mais donc en aucun cas ici le code demande à Excel de changer son format!

    Tout apparement se joue donc dans la première fonction et ton idée des apostrophes n'est pas mal, si on éssayais de mettre cela dans la fonction protected void ibnGridViewToExcel_Click ?

    C'est a dire esqu'il n y'a pas une possibilité de dire à cette fonction de rajouter les apostrophes devant les mobiles lors de l'exportation vers excel?

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    J'ai rapidement survolé votre topic, et j'ai pu apercevoir que vous parliez de changer le format dans Excel, je ne sais pas si c'est toujours d'actualité, mais je vais vous donner le code pour mettre toutes les cellules Excel en format String, pour afficher les 0 non significatifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Transmission des données de la DataSet vers le HtmlTextWtriter
    GVtoExcel.RenderControl(monHtmlTextWriter)
     
    ' On applique la feuille de style
    Dim style As String = "<style>.vartochar{mso-number-format:\@;text-align='center';}</style>"
    Response.Write(style)
     
    ' On copie le contenu extrait dans la mémoire tampon
    Response.Write(monStringWriter.ToString())
     
    ' On ferme "le flux" de données et envoie les données au client
    Response.End()
    Plus haut dans le code, vous devez selectionné les cellules auquel vous souhaitez appliquer ce style, pour ma part il s'agit de toutes les cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'On transforme chaque cellule du tableau en format "text" afin de pouvoir affiché les 0 non significatifs (à gauche) à l'aide de la feuille de style
    For i As Integer = 0 To GVtoExcel.Rows.Count - 1
         For j As Integer = 0 To GVtoExcel.Rows(i).Cells.Count - 1
              GVtoExcel.Rows(i).Cells(j).Attributes.Add("class", "vartochar")
         Next
    Next
    J'espère avoir pu vous aider, sinon bonne chance dans vos recherches !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    salut Enkel, oh que uoi il est d'actualité

    J'ai bien lu ton code et je l'ai transformé en c# à cause de la compatibilié

    Mais au niveau du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i <= GVClients.Rows.Count - 1; i++) {
    		for (int j = 0; j <= GVClients.Rows(i).Cells.Count - 1; j++) {
    			GVClients.Rows(i).Cells(j).Attributes.Add("class", "vartochar");
    		}
    	}
    Mais j'ai eu cette erreur:
    CS0118: 'System.Web.UI.WebControls.GridView.Rows' est un 'propriété' mais est utilisé comme un 'méthode'
    Au niveau de ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int j = 0; j <= GVClients.Rows(i).Cells.Count - 1; j++) {
    Je ne la comprends pas bien

    Merci pour tout...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Et tout content de son état c'est Sonny!!!

    Merci Enkel j'ai convertis tout en vb et c'est super cool, sa passe!

    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
    Protected Sub ToExcel_Click(sender As Object, e As EventArgs)
     
        'On transforme chaque cellule du tableau en format "text" afin de pouvoir affiché les 0 non significatifs (à gauche) à l aide de la feuille de style'
    For i As Integer = 0 To GVClients.Rows.Count - 1
         For j As Integer = 0 To GVClients.Rows(i).Cells.Count - 1
              GVClients.Rows(i).Cells(j).Attributes.Add("class", "vartochar")
         Next
    Next
     
    	Response.Clear()
    	Response.AddHeader("content-disposition", "attachment;filename=file.xls")
    	Response.Charset = ""
    	Response.ContentType = "application/vnd.xls"
    	Dim stringWrite As New System.IO.StringWriter()
    	Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
    	' Transmission des données de la DataSet vers le HtmlTextWtriter'
    	GVClients.RenderControl(htmlWrite)
    ' On applique la feuille de style'
    Dim style As String = "<style>.vartochar{mso-number-format:\@;text-align='center';}</style>"
    Response.Write(style)
     
    	Response.Write(stringWrite.ToString())
    	Response.[End]()
    end sub
     
     
       Public Overrides Sub VerifyRenderingInServerForm(control As Control)
     
    End Sub

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

Discussions similaires

  1. [XL-2007] Exporter les valeurs à OptionButton dans une feuille Excel
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2012, 20h01
  2. [AC-2007] Exporter plusieurs tables dans UNE feuille Excel
    Par Bristow47 dans le forum VBA Access
    Réponses: 8
    Dernier message: 06/07/2010, 08h00
  3. [AC-2003] Comment exporter un module dans une feuille Excel?
    Par SunRay dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2009, 16h23
  4. [MySQL] librairie - exporter base de donnees dans une feuille excel ?
    Par juju03 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 30/07/2008, 14h45
  5. Exporter une variable dans une feuille excel
    Par adrien.gendre dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/07/2007, 20h36

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