本文共 2109 字,大约阅读时间需要 7 分钟。
matlab窗口中显示excel表格的问题
(2000-08-13 11:59:10)
刚刚在恒润论坛看到的,感觉还不错,跟踪中……
http://www.hirain.com/forum/dispbbs.asp?boardID=1&ID=301
% -----------------------------
ycnzh 发言:
请教关于matlab窗口中显示excel表格的问题
因程序需要显示大量的结果分析数据,想到用excel交互,但希望能将excel中表格的指定区域在MATLAB的窗体中显示,而不是将Excel的界面整个显示出来,不知用什么方法比较好。曾试过用ActiveX和DDE,可惜只知道能将Excel的整个界面打开或者获得指定区域的数据,但不能在matlab产生的窗体界面中显示excel表格的指定区域,百思不得其解。还望高手指点。
如果能有好的显示表格的界面制作方法,希望能赐教,不胜感激。谢谢!
% -----------------------------
wgcui 发言:
在MATLAB中,目前还没有一个现成的显示表格的控件,一种方法是使用现有的控件来拼凑出表格样子,一个现成的例子就是随Runtime Server 带的例子:~matlab\toolbox\runtime\examples\amortsched.m,它使用了datagrid.m显示表格数据。
还有一种方式,是通过ActiveX控件,比如Micorsoft Flex Grid控件实现。
%-----------------------------
ycnzh 发言:
谢谢您的回复。我现在也是这样考虑的。我曾试着用画图的方法画出表格,虽然也能说得过去,终究不是很美观,用起来也不是很方便。用ActiveX控件是目前来说较好的选择,您说的这个控件是比较方便的一个。我正在调试,对于datagrid.m文件我再找找看。谢谢您的指点。关于matlab中使用ActiveX控件的问题,帮助中讲的比较笼统,比如,如何获得控件包含的属性,如何得到控件的ProgID等等,哪里有这方面较为详细的资料,还望您能再指点一下。谢谢!
% -----------------------------
wgcui 发言:
下面是我摸索出来的一个例子,你可以试一下。
figure('pos',[100 100 600 400]);
h=actxcontrol('MSFlexGridLib.MSFlexGrid.1',[0 1 400 400]);
nrow = 3;
ncol = 4;
data = rand(nrow,ncol); % you can adapt this line
h.Rows = nrow+1;
h.Cols = ncol+1;
for i=1:nrow
for j=1:ncol
h.Row = i;
h.Col = j;
h.Text = num2str(data(i,j));
end
end
使用get(h)获得控件的属性
使用invoke(h)获得控件的方法
使用events(h)获得控件的事件
上面的例子,就是通过get(h)得到的信息凑出来的。我用ActiveX的经验也不多,希望大家多多交流。
%-----------------------------
ycnzh 发言:
现在这个问题已经解决,我用了另外一个ActiveX控件,因为有的机器上Micorsoft Flex Grid控件没有注册,不能直接使用,不过您的提示很有启发。另外,向您推荐一本书,《MATLAB应用程序接口用户指南》,刘志俭编著,2000年出版。该书中对ActiveX控件编程介绍的相对来说比较详细。
对于ActiveX编程,感觉对于不同程序间进行接口还是很方便的,尤其对于界面制作,matlab本身带有的界面控件比较少,如果界面想做的精致必须另想办法。我觉得ActiveX控件是很好的选择之一。可惜对于ActiveX编程刚刚起步,所知甚少,和matlab配合使用时困难重重。尤其在matlab中,无法获得ActiveX控件各属性以及方法和事件的详细说明,比如get命令获得属性列表后,有些属性能猜出个大概,但很多属性不知道能起什么作用,invoke命令获得的方法也是如此。摸索着尝试实在效率低下。就我遇到的问题,现在看来其实不难,如果ActiveX控件的属性和方法等有详细的帮助,应该很快可以解决,而我在您的指点的基础上还用了将近三天的时间才基本解决。绝大多数时间用在对属性设置等方面的尝试上了。看来最好还是能有ActiveX控件的详细帮助文档配合,才是最佳方案。可是这些帮助文档哪里能找到?也许是要对ActiveX编程技术深入了解才行。希望以后能和多交流,共同进步。
再次感谢您的指点
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。