zoukankan      html  css  js  c++  java
  • Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题

    系统版本: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%MATLABR2015b oolboxmatlabiofun+matlab+io+internalgetExcelInstance.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/

  • 相关阅读:
    脚本——基础命令
    ELK 安装
    keepalived+lvs
    zabbix安装
    lnmp
    nagios安装
    nginx-tomcat动静分离
    课时五、boost与adaboost
    课时四、决策树和随机森林
    课时三、回归实践
  • 原文地址:https://www.cnblogs.com/jmpep/p/5015343.html
Copyright © 2011-2022 走看看