Problème sur un process Excel qui reste actif après utilisation de Excel.Applica [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2007
-
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2007
-
Salut,

J'ai un petit soucis qui est que j'ai le process Excel qui reste ouvert lorsque je quitte mon appli.



Le code que j'ai en gros :

<hr size="2" width="100%">public class Test

{

private ApplicationClass xlApp = null;

private Workbook excelWB;



public Test()

{

}



public void Open()

{

xlApp = new ApplicationClass();



excelWB = xlApp.Workbooks.Open(tmpFileInfo.FullName, 1, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing);

}



public void Save()

{

excelWB.SaveAs(excelWB.FullName, Type.Missing,
Type.Missing, Type.Missing, false, false,

XlSaveAsAccessMode.xlShared, Type.Missing, true,
Type.Missing, Type.Missing, Type.Missing);

}



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);


excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();

xlApp = null;

}

}

<hr size="2" width="100%">

Le programme sort dès que j'arrive sur la dernière ligne.


Pour info, j'ouvre plusieurs fichier Excel et lorsque je quitte le programme, j'appelle la fonction Close.

Mais tout les process Excel qui était démarré reste en route.



Merci d'avance

4 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
en fait, faut faire un ReleaseComObject sur tous les objets COM ouvert...



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);
while (Marshal.ReleaseComObject (excelWB) > 0);


excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();



while (Marshal.ReleaseComObject (xlApp) > 0);

xlApp = null;

}


Sébastien FERRAND
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
Ne pas oublier de faire un ReleaseComObject sur le xlApp...



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);

excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();



while (Marshal.ReleaseComObject (xlApp) > 0);

xlApp = null;

}


Sébastien FERRAND
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2007

Je viens d'essayer et les process "Excel.exe" dans le gestionnaire de tache sont tjs present.



Ce que je fais en attendant, c'est chercher tout les process "Excel" qui n'ont pas de fenetre et je les kill,

mais je trouve pas ça propre.
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2007

Ok, c'est bon ça fonctionne.

Merci