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 :

Taille fichier xls généré anormale


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut Taille fichier xls généré anormale
    Bonjour,

    Je génère un fichier Excel à partir d'un tableau de string. Jusque là pas de problème mais ce que je ne comprend pas c'est qu'une fois terminé, le fichier enregistré a une taille de plus de 2.28 Mo alors qu'il n'y a que 22 lignes et 2 colonnes même si les chaines de caractères sont longues car quand je fais un copy paste sur un fichier créé à la main, le fichier enregistré ne fait que 15 Ko. Je n'ai fait simplement que remplir avec des valeurs des cellules et un ensuite utiliser la méthode Save() pour le workbook.

    Code de la méthode qui rempli l'excel
    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
    public void ReportWithOneSegItem(string[] tab, int pos, int endPosition, string title, Excel.Worksheet ws)
            {
                ws.Cells[1, 1] = "Nom du BUS";
     
                if (pos == 0) ws.Cells[1, 2] = title;
                else ws.Cells[1, 2] = title + " p" + pos.ToString();
     
                //all value column in text format
                ws.get_Range("A1", "B65000").NumberFormat = "@";
                for (int i = 0; i < tab.Length; i++)
                {
                    string[] val = tab[i].Split('|');
                    if(pos == 0)
                    {
                        ws.Cells[i + 2, 1] = val[1];
                        ws.Cells[i + 2, 2] = val[0];
                    }
                    else
                    {
                        ws.Cells[i + 2, 1] = val[1];
                        if (endPosition == 0) ws.Cells[i + 2, 2] = val[0].Substring(pos - 1);
                        else ws.Cells[i + 2, 2] = val[0].Substring(pos - 1, endPosition - pos);
                    }
                }
     
                //width of column
                ws.get_Range("A1", "B65000").Columns.AutoFit();
     
                /* if user you want to rename the excel worksheet
                try
                {
                    ws.Name = title;
                }
                catch (Exception nameSheet)
                {
                    ("Le nom de cette feuille existe déjà.");
                }
                */
            }
    Pour la méthode appelante, pareil ce simple code me créé déjà un classeur vide à 13 ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbook wk = app.Workbooks.Add(Type.Missing);
    wk.SaveAs(saveFileDialog1.FileName, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,
                                false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    Le problème est que je suis amené à chaque clique de format d'augmenter la taille des saisies donc je risque de me retrouver avec un fichier à 50 Mo .


    Merci d'avance.

    Édit : pour le 13 Ko ça a l'air normal puisque en faisant le test à la main, un classeur vide fait bien 13Ko. Ça provient donc de mon traitement mais je vois pas en quoi ce code me rajoute 2 Mo de taille.

  2. #2
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Problème résolu. En supprimant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //all value column in text format
     ws.get_Range("A1", "B65000" ).NumberFormat = "@";
    et en remplcant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.get_Range("A1", "B" + tab.Length).NumberFormat = "@";
    J'obtiens bien un fichier d'une taille normale. Donc apparemment convertir 2 colonnes en format texte ça fait pas mal grossir le fichier .

    Merci quand même.

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

Discussions similaires

  1. Optimisation taille fichier xls
    Par kortnor dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/08/2008, 08h46
  2. Taille du fichier PDF généré par report
    Par sebtbo dans le forum Reports
    Réponses: 0
    Dernier message: 04/02/2008, 20h06
  3. Appli lancant un fichier xls généré
    Par Soupape dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/04/2007, 15h50
  4. total des nombres générés dans un fichier.xls?
    Par loukoulouk dans le forum Modules
    Réponses: 4
    Dernier message: 22/06/2006, 11h22
  5. Réponses: 1
    Dernier message: 26/04/2006, 12h01

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