Solved

Why does calling Quit() on an Interop.Excel.Application in a .Net application not terminate the process?

Posted on 2013-10-28
4
691 Views
Last Modified: 2013-10-28
Hi:

I'm having issues using Microsoft Interop.Excel.Application in my .Net program.

Consider the following code snippet:
                // Open to force Excel to perform calculation itself
                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
                //excelApp.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMinimized;
                var excelWorkbook = excelApp.Workbooks.Open(tempFileName);
                excelWorkbook.Save();
                excelWorkbook.Close();
                excelApp.Quit();
                excelApp = null;

Open in new window



When I check in Task Manager, I notice that the EXCEL.EXE task created by the above code snippet does not terminate.

I'm not directly accessing any of the worksheets.
For my purposes all I need to do is:
1) Launch the application (which will force a recalc on open)
2) Save the spreadsheet
3) Terminate the application

What am I missing here?
Is there some sort of COM object that needs to be released?


Thanks,
JohnB
0
Comment
Question by:jxbma
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 81

Expert Comment

by:zorvek (Kevin Jones)
ID: 39606863
Did you try closing the workbook after saving it so that there are no open workbooks when invoking the Quit method?

Kevin
0
 
LVL 4

Expert Comment

by:ShareD_Point
ID: 39606927
You may need to kill the excel process.

Process[] AllProcesses = Process.GetProcessesByName("excel");
// check to kill the right process
  foreach ( Process ExcelProcess in AllProcesses)
{
    if (myHashtable.ContainsKey(ExcelProcess.Id) == false)
        ExcelProcess.Kill();
}
AllProcesses = null;

Ref Link:

http://july-code.blogspot.de/2008/11/kill-excelexe-process-in-c-net.html

Hope this helps.
0
 
LVL 21

Accepted Solution

by:
Boyd (HiTechCoach) Trimmell, Microsoft Access MVP earned 500 total points
ID: 39606998
It sounds like you code may be starting two instances of Excel and only closing one.

You may also want to check out this:
How to open an Excel file in C#
http://csharp.net-informations.com/excel/csharp-open-excel.htm
0
 
LVL 1

Author Closing Comment

by:jxbma
ID: 39607078
There are not 2 instances of Excel running.

I just need to do a release on the workbook and application COM objects.
Thanks for pointing me in the right direction.

JB
0

Featured Post

Veeam gives away 10 full conference passes

Veeam is a VMworld 2017 US & Europe Platinum Sponsor. Enter the raffle to get the full conference pass. Pass includes the admission to all general and breakout sessions, VMware Hands-On Labs, Solutions Exchange, exclusive giveaways and the great VMworld Customer Appreciation Part

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was prompted to write this article after the recent World-Wide Ransomware outbreak. For years now, System Administrators around the world have used the excuse of "Waiting a Bit" before applying Security Patch Updates. This type of reasoning to me …
Cancel future meetings from user mailboxes in Office 365 using Remove-CalendarEvents
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

627 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question