मेरे पास निम्न कोड है:सी # = एक्सेल प्रक्रियाएं क्यों समाप्त नहीं हो रही हैं?
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;
}
प्रभावी रूप से, यह जांचता है कि एक्सेल कार्यपुस्तिका में विशिष्ट चादरें हैं या नहीं। भले ही वहां है या नहीं, मैं एक्सेल प्रक्रियाओं को समाप्त करना चाहता हूं। हालांकि, प्रत्येक बार जब कोई नई कार्यपुस्तिका खुलती है, तो एक नई प्रक्रिया को जोड़ा जाता है, और कभी नहीं हटाया जाता है?
पीएस। मुझे पता है कि वहां डुप्लिकेट कोड है .... इसे जल्द ही सूचित किया जाएगा :)
आप की तरह शिकार पूछा यहाँ: http://stackoverflow.com/questions/5357244/quitting-excel-with-c-while-using-excel-automation – gideon
अधिक जानकारी के लिए लिंक देखें जब एक्सेल अभी भी कॉल करता है जब आप कॉल करते हैं। – gideon