MATLAB Answers

0

Why do some Excel processes fail to terminate after using XLSREAD, XLSWRITE or XLSFINFO in MATLAB?

Asked by MathWorks Support Team on 23 Nov 2012
Latest activity Commented on by Image Analyst
on 9 Jan 2016 at 18:58

When I use a command that calls Excel as an ActiveX server, such as XLSREAD, XLSWRITE, or XLSFINFO, an Excel.exe process is left in memory even after the command is finished or I close MATLAB. If I am running a script with many calls to XLSREAD, the ghost processes fill up my memory.

  0 Comments

1 Answer

Answer by MathWorks Support Team on 18 Oct 2013
 Accepted answer

In some circumstances, Excel may not shut down after calling XLSREAD, XLSWRITE, or XLSINFO from MATLAB.

Whenever one of these commands is executed in MATLAB on Windows and Excel is installed, a new instance of Excel is started to perform the operation using Excel's ActiveX interface. After the operation is completed, MATLAB requests that Excel quit, however in some circumstances, Excel may ignore this request.

One reason this may occur is if some other application has established an ActiveX connection to Excel and is hanging on to a reference to the interface, and not releasing it. The way ActiveX works is that if 2 applications both make connections to the same server, the server will not close until both applications have terminated their connection. The connection from MATLAB is being terminated, however it is possible that another application has made a connection to Excel. In the past we noticed an issue where Google Desktop Search would create such a connection, however starting with MATLAB 7.0.4 (R14SP2) this issue was resolved by working around the specific way that Google Desktop Search made its connection. If you are experiencing this same issue with a later version of MATLAB, or do not have Google Desktop Installed, there is likely another application on your computer which is holding on to the Excel application ActiveX reference.

One way to work around this issue is to identify the application that is causing this issue, then disable it. You can also contact the company which created the software to notify them of this issue.

Certain Excel add-ins may also prevent proper termination of Excel. Some known add-ins that might cause issues are Broadcom's "Send to Bluetooth" add-in (btsendto_office.dll) and Bloomberg's TaskpaneHost add-in. Disabling the add-ins that cause issues is a possible workaround.

When you use a Bloomberg add-in, that causes this issues: Please open a help chat (by pressing the help key twice on the Bloomberg keyboard) and ask for the technical departement. Bloomberg will then have a look into these issues.

As a last resort you can use the SYSTEM command via MATLAB to kill the process.

system('taskkill /F /IM EXCEL.EXE');

  3 Comments

Jeffrey Girard
on 22 Aug 2014

I have also had this problem when running CSVWRITE within a loop, leading to there being dozens of EXCEL.EXE processes running. The last resort option worked and its inclusion in this answer was appreciated.

Juan Chilla
on 9 Jan 2016 at 18:02

I started having this problem recently, when the IT department upgraded us to Office 2013. It appears Matlab's request to close Excel is not properly implemented for the new(er) version of Excel. The workaround I found is to add a "clear functions" command for Matlab to properly close the ghost process.

Image Analyst
on 9 Jan 2016 at 18:58

Starting with R2015b, Excel does not shutdown after calls to xlsread() or xlswrite(). However there should be only one instance running:

http://www.mathworks.com/help/matlab/release-notes.html

Data Import and Export

Excel Spreadsheets: Read and write to the same spreadsheet repeatedly with improved performance of xlsread, xlswrite, readtable, and writetable functions

Repeated calls to the xlsread, xlswrite, readtable, and writetable functions show significant performance improvement.


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!