C # = Pourquoi les processus Excel ne se terminent-ils pas?
J'ai le code suivant:
private bool IsMousetrapFile(string path)
{
logger.Log(validateFileMessage + path);
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook xlWorkBook = workbooks.Open(path, 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, Type.Missing);
Excel.Sheets worksheets = (Excel.Sheets)xlWorkBook.Worksheets;
Excel.Worksheet ws = null;
foreach (string sheet in expectedWorksheets)
{
try
{
ws = (Excel.Worksheet)worksheets.get_Item(sheet);
logger.Log(validMousetrapFileMessage + path);
}
catch
{
logger.Log(validateSheetError + sheet + ": " + path);
if (ws != null)
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(worksheets);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(xlApp);
return false;
}
}
if (ws != null)
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(worksheets);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(xlApp);
return true;
}
Effectivement, il vérifie si un classeur Excel contient des feuilles. Indépendamment de savoir s'il est ou n'est pas, je veux Excel processus à la fin. Cependant, chaque fois qu'un nouveau classeur est ouvert, un nouveau processus est ajouté, et jamais supprimé?
PS. Je sais qu'il est de dupliquer le code....il doit être rangé bientôt 🙂
source d'informationauteur Darren Young
Vous devez vous connecter pour publier un commentaire.
Utilisation
Excel.Application.Quit()
lorsque vous avez terminé le traitement ou ce que vous faites.Dans votre cas:
xlApp.Quit();
Mise à JOUR:
@Lasse V. Karlsen a souligné que faire si Excel est déjà en cours d'exécution. Eh bien, voici une solution: ( je n'ai pas testé le code, c'est juste pour vous donner une idée )
Ma solution
Quelques jours j'ai mis en œuvre à l'Exportation/Importation.
J'ai reçu de code ci-dessous à partir de quelque part, quand j'ai cherché sur Google et il fonctionne très bien.