• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab使用xlsread,xlswrite函数导致excel进程无法终止的问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

系统版本:Win7 64位

Matlab版本:R2015b

问题描述:使用excel的操作函数,比如xlsread,xlswrite,导致excel进程无法终止,任务管理器中仍残留excel进程,打开excel文档,修改后不提示保存。

参考:http://www.mathworks.com/matlabcentral/answers/98261-why-do-some-excel-processes-fail-to-terminate-after-using-xlsread-xlswrite-or-xlsfinfo-in-matlab

进程显示automation -Embedding,应该是某个应用占用了这个进程,然而我并没有找到是哪个应用。

解决方法:

之前的Matlab R2012a并没有出现此问题,问题是在R2015b版本中的%Program Files%MATLAB\R2015b\toolbox\matlab\iofun\+matlab\+io\+internal\getExcelInstance.m文件,代码:

 1 function app = getExcelInstance
 2 %   Copyright 2015 The MathWorks, Inc.
 3 
 4      persistent excelApplication;
 5     if isempty(excelApplication) || ~isactive || excelApplication.Visible
 6         % If Excel is not available, this will throw an exception.  If
 7         % Excel has been made visible, we assume the user opened the
 8         % worksheet outside MATLAB using the same Excel process, and so we
 9         % should start a new process.
10         excelApplication = actxserver('Excel.Application');
11     end
12     app = excelApplication;
13     
14     function tf = isactive
15         % Try accessing a readonly property of the COM server to see if it is
16         % active.
17         try
18             get(excelApplication, 'Version');
19             tf = true;
20         catch
21             excelApplication.delete;
22             excelApplication = [];
23             tf = false;
24         end
25     end
26 end

第四行的关键词persistent,如果直接换成excelApplication=[],则不会出现进程残留的情况;

这个文件应该是R2015b版本中加上去的,之前的版本excel操作函数是直接调用actxserver函数,也没有出现此问题;

个人解决方案:换成R2015a版本,完美运行;

MATLAB各版本的下载地址(可能需要 梯@@子 ):http://www.eng.utah.edu/downloads/matlab/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap