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 :

datatable vers excel


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut datatable vers excel
    Bonjour j'ai besoin d'exporter une datatable vers excel.
    Je fais déjà cela avec un gridview alors je voulais faire pareil sauf que là le gridview ne doit pas être visible, ce qui fait qu'il n'y a aucune donnée dans mon fichier excel, j'utilise le renderControl.

    Donc si quelqu'un sait comment exporter une datatable directement ou un gridview que je puisse mettre à visible = false je suis preneur.

    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
     
    protected void btnExcel_click(object sender, EventArgs e)
        {
            if (Session["datatable"] != null)
                dt = (DataTable)Session["datatable"];
     
            dt.DefaultView.Sort = "niveau1 ASC,niveau2 ASC, niveau3 ASC, niveau4 ASC";
            dt = dt.DefaultView.ToTable("dt");
     
            try
            {
                string strFileName = String.Empty;
                string strFilePath = String.Empty;
                strFilePath = Server.MapPath("~/Excel/") + "Structure.xls";
                if (File.Exists(strFilePath))
                {
                    File.Delete(strFilePath);
                }
                System.IO.StringWriter oStringWriter = new StringWriter();
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
                StreamWriter objStreamWriter;
                //string strStyle =@" .text { mso-number-format:\@; }";
                objStreamWriter = File.AppendText(strFilePath);
     
                GridViewStructure.DataSource = dt;
                GridViewStructure.DataBind();
     
                GridViewStructure.RenderControl(oHtmlTextWriter);
     
                objStreamWriter.WriteLine(oStringWriter.ToString());
                objStreamWriter.Close();
                string strScript = "window.open('./Excel/Structure.xls');";
     
                if (!ClientScript.IsClientScriptBlockRegistered(this.GetType(), "clientScript"))
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", strScript, true);
            }
            catch (Exception)
            {
                //Handle Exception
     
            }
            GridViewStructure.Visible = false;
        }
    Actuellement le fait de mettre la dernière ligne ne sert à rien.

    Merci

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    Si j'ai bien compris ton problèle, je pense que tu peux travailler avec une GridView sauf la votre GridViewStructure qui se trouve dans le designer, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GridView gv = new GridView();
    gv.DataSource = dt;
    gv.DataBind();
     
    gv.RenderControl(oHtmlTextWriter);

    Bonne courage

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Bon j'ai trouvé mais bon faut passer par plusieur objet donc à voir mais cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DataGrid dg = new DataGrid();
                DataSet ds = new DataSet();
                ds.Tables.Add(dt);
                dg.DataSource = ds;
                dg.DataBind();
                dg.RenderControl(oHtmlTextWriter);
    On passe par un dataset et un datagrid créer à la volé et dans ce cas là il affiche les données dans Excel.
    A priori un gridview invisible ou visible puis invisible il n'aime pas.

  4. #4
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Merci redouane en fait c'est bien cela, il ne faut pas passer par un objet du code aspx, mais bien créer un objet à la volée.

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

Discussions similaires

  1. Exporter Datatable vers Excel
    Par Chris@Xerox dans le forum Windows Forms
    Réponses: 16
    Dernier message: 11/06/2019, 13h14
  2. export datatable vers excel
    Par mattmax dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/12/2012, 18h32
  3. exporter une datatable vers excel
    Par lady sina dans le forum JSF
    Réponses: 5
    Dernier message: 20/06/2012, 10h38
  4. exporter un rich datatable vers excel
    Par khaled84 dans le forum Documents
    Réponses: 6
    Dernier message: 17/01/2011, 18h43
  5. C#: exportation d'un DataTable vers Excel
    Par Leelith dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/02/2010, 19h05

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