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.