Fichier excel généré qui a une taille anormale [RESOLU]

Fichier excel généré qui a une taille anormale [RESOLU] - C#/.NET managed - Programmation

Marsh Posté le 11-08-2009 à 22:59:10    

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 8O 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 :
  1. public void ReportWithOneSegItem(string[] tab, int pos, int endPosition, string title, Excel.Worksheet ws)
  2.         {
  3.             ws.Cells[1, 1] = "Nom du BUS";
  4.             if (pos == 0) ws.Cells[1, 2] = title;
  5.             else ws.Cells[1, 2] = title + " p" + pos.ToString();
  6.            
  7.             //all value column in text format
  8.             ws.get_Range("A1", "B65000" ).NumberFormat = "@";
  9.             for (int i = 0; i < tab.Length; i++)
  10.             {
  11.                 string[] val = tab[i].Split('|');
  12.                 if(pos == 0)
  13.                 {
  14.                     ws.Cells[i + 2, 1] = val[1];
  15.                     ws.Cells[i + 2, 2] = val[0];
  16.                 }
  17.                 else
  18.                 {
  19.                     ws.Cells[i + 2, 1] = val[1];
  20.                     if (endPosition == 0) ws.Cells[i + 2, 2] = val[0].Substring(pos - 1);
  21.                     else ws.Cells[i + 2, 2] = val[0].Substring(pos - 1, endPosition - pos);
  22.                 }
  23.             }
  24.             //width of column
  25.             ws.get_Range("A1", "B65000" ).Columns.AutoFit();
  26.            
  27.             /* if user you want to rename the excel worksheet
  28.             try
  29.             {
  30.                 ws.Name = title;
  31.             }
  32.             catch (Exception nameSheet)
  33.             {
  34.                 ("Le nom de cette feuille existe déjà." );
  35.             }
  36.             */
  37.         }


 
Pour la méthode appelante, pareil ce simple code me créé déjà un classeur vide avec une taille normale de 13 ko
 

Code :
  1. Workbook wk = app.Workbooks.Add(Type.Missing);
  2. wk.SaveAs(saveFileDialog1.FileName, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,
  3.                             false, false, Excel.XlSaveAsAccessMode.xlNoChange,
  4.                             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 :aie: .
 
 
Merci d'avance.


Message édité par alpachinois le 12-08-2009 à 14:21:00
Reply

Marsh Posté le 11-08-2009 à 22:59:10   

Reply

Marsh Posté le 12-08-2009 à 14:16:08    

Merci de ton aide c'était presque ça. En supprimant  

Code :
  1. # //all value column in text format
  2. #             ws.get_Range("A1", "B65000" ).NumberFormat = "@";


 
et en remplcant par

Code :
  1. 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  :sweat: .
 
Merci bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed