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 colonnesmê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
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
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à."); } */ }
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
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);.
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.
Partager