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

C# Discussion :

Creation/Ecriture dans un fichier .CSV


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Par défaut Creation/Ecriture dans un fichier .CSV
    Bonjour,

    Etant bloquer sur mon problème, je me tourne vers vous.

    J'ai un stringbuilder qui stock les résultats de ma requête et ce stringbuilder est stocker dans une session.
    Le problème est que quand trop de résultat est renvoyé (plus d'1 million de résultats par exemple), j'ai une erreur OutOfMemory qui me sort.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session["ContenuATelecharger"] = CsvWriter.Write(table);
    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
    public static class CsvWriter
        {
            public static string Write(DataTable table)
            {
                if (table == null) throw new ArgumentNullException("table");
     
                StringBuilder sb = new StringBuilder();
     
                string val = "";
     
                //Ecriture des entêtes
                foreach (DataColumn col in table.Columns)
                {
                    val += col.ColumnName + ";";
                }
                sb.AppendLine(val.Substring(0, (val.Length - 1)));
     
                //Ecriture des lignes
                foreach (DataRow row in table.Rows)
                {
                    val = "";
                    foreach (Object champ in row.ItemArray)
                    {
                        val += champ + ";";
                    }
     
                    sb.AppendLine(val.Substring(0, (val.Length - 1)));
                }
                return sb.ToString();
            }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Response.ClearContent();
                Response.ClearHeaders();
     
                Response.ContentType = "text/csv";
                Response.AddHeader("content-disposition", "attachment;filename=" + filename);
     
                Response.Write(Session["ContenuATelecharger"].ToString());
     
                Response.Flush();
     
                Response.End();
    J'ai pensé à écrire dans mon fichier en plusieurs fois, mais je ne vois pas comment le faire, car toutes mes données sont stockées dans ma session.

    Je ne sais pas si j'ai été assez clair

    Aurez-vous une solution svp?

    Merci

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Tu dois réellement stocker ca en session? Sinon il y a des mécanismes pour stocker les variables session dans une DB SQL au lieu de la mémoire, par exemple.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il vaudrait mieux écrire le fichier directement dans le flux de la réponse, via un StreamWriter par exemple...

Discussions similaires

  1. Ecriture dans les fichiers csv
    Par nicogigo dans le forum Général Python
    Réponses: 4
    Dernier message: 17/03/2010, 16h38
  2. Réponses: 0
    Dernier message: 26/05/2009, 10h10
  3. Ecriture dans un fichier csv
    Par Herveg dans le forum PL/SQL
    Réponses: 1
    Dernier message: 25/11/2008, 17h01
  4. Ecriture dans un fichier texte (csv)
    Par laurent.c123 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 30/10/2007, 11h06
  5. Réponses: 7
    Dernier message: 06/02/2007, 13h27

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