J'ai donc un objet Microsoft.Office.Interop.Excel.Workbook. Il utilise essentiellement un fichier Excel de modèle pour se construire. Le fichier Excel contient une couleur de colonne de modèle pour la section des résultats, etc., puis le code imprime simplement sur ces colonnes de modèle, il ne personnalise pas l'apparence du fichier lui-même, ne place que les données. Cependant, c'est un problème car après cela, notre modèle représente les lignes les plus POSSIBLES possible, mais la plupart du temps (la plupart du temps), nous n'en utilisons même pas la moitié.Comment "nettoyer" Microsoft.Office.Interop.Excel.Workbook
Quelle est la manière la plus simple de supprimer toutes les lignes qui ne contiennent pas de données de cellule après la création du fichier, en travaillant directement avec l'objet Microsoft.Office.Interop.Excel.Workbook. Nous avons déjà une méthode de "nettoyage" qui fonctionne après la création, mais je veux ajouter cette logique. Voici notre nettoyage actuel:
private void CleanupExcel()
{
if (!_visible && _workbook != null)
{
_workbook.Close(false, Missing.Value, Missing.Value);
}
_workbook = null;
_sheet = null;
if (_excel != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(_excel);
// WW, 5/26/09: not sure if a problem here, but it probably is since the code was taken from here
// but in the indicator, Excel exists in the process even after the app is closed. The code here seems to fix it.
GC.Collect();
GC.WaitForPendingFinalizers();
}
_excel = null;
}
P.S. D'ailleurs, c'est la première de deux feuilles dans le document. J'ai également accès à l'objet Microsoft.Office.Interop.Excel.Worksheet s'il est plus facile de le faire.
Pas pour votre question réelle, mais concernant le commentaire dans votre exemple de code. Vous ne nettoyez pas les choses correctement, si vous le faisiez, vous n'auriez pas besoin de 'GC.Collect();'. Vous devriez libérer tous les objets que vous créez partout (ce qui inclut de faire attention à toujours garder une référence à tout ce qui est créé). Voir cette question pour plus de détails: http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c –