主要内容

读取电子表格数据使用Excel作为自动化服务器

这个例子展示了如何使用一个COM自动化服务器从MATLAB访问另一个应用程序®。它创建了一个用户界面来访问数据微软®Excel®文件。如果你不使用组件对象模型(COM)在你的应用程序中,然后看到函数和例子电子表格Excel电子表格数据导入MATLAB的替代能源。

使MATLAB之间的通信和电子表格程序,这个例子创建了一个对象在一个自动化服务器运行一个Excel应用程序。MATLAB,然后通过接口访问电子表格中的数据提供的Excel自动化服务器。最后,这个例子创建了一个用户界面来访问数据Microsoft Excel文件。

技术演示

  • 使用一个自动化服务器从MATLAB访问另一个应用程序

  • 方法操作Excel数据类型使用的接口和策划

以下技术演示如何可视化和操纵电子表格数据:

  • 实现一个接口,使绘制所选列的Excel电子表格。

  • MATLAB数字插入一个Excel文件。

查看完整的代码清单中,打开文件actx_excel.m在编辑器中。

创建Excel自动化服务器

访问电子表格数据的第一步从MATLAB运行Excel应用程序在一个自动化服务器进程使用actxserver功能和程序ID,excel.application

exl = actxserver (“excel.application”);

exl对象提供一个Excel支持的数量的接口程序。万博1manbetx使用手册界面打开Excel文件包含的数据。

exlWkbk = exl.Workbooks;exlFile = exlWkbk。打开([docroot ' / techdoc / matlab_external /例子/ input_resp_data.xls '));

使用工作簿接口来访问数据范围对象,该对象的引用存储到一个指定的数据表。这个例子中访问所有的数据在列第一个单元格一个列的最后一个单元格G

exlSheet1 = exlFile.Sheets.Item (“Sheet1”);robj = exlSheet1.Columns.End (4);%找到列numrows = robj.row结束;%,并确定它是什么行dat_range = [A1: G的num2str (numrows)];%读到最后一行rngObj = exlSheet1.Range (dat_range);

在这一点上,从Excel文件的整个数据集sheet1通过访问对象接口范围rngObj。这个对象返回MATLAB单元阵列中的数据exlData,其中包含数字和字符数据:

exlData = rngObj.Value;

操作数据MATLAB工作空间

现在单元阵列中的数据,您可以使用MATLAB函数来提取和重塑部分数据使用的接口,并通过绘制函数。假设数据,请参阅Excel电子表格格式

下面的代码操作数据:

2 = 1:尺寸(exlData, 2) matData (:, ii) =重塑([exlData{2:最终,二世}),大小(exlData(2:最终,ii)));(exlData lBoxList {2} = {1, 2});结束

代码执行以下操作:

  • 从细胞中提取数字数据数组。看到花括号内的索引表达式{}

  • 连接个人双打返回的索引操作。看到方括号内的表达式[]

  • 改造结果为一个数组,使用安排的数据列重塑函数。

  • 提取每一列的第一个单元格中的文本exlData数据和存储单元阵列中的文本lBoxList。该变量用于生成列表框中的项。

Excel电子表格格式

这个例子假定一个特定的组织的Excel电子表格,如图片所示。

input_resp_data中的数据。xls电子表格。

Excel文件的格式是:

  • 每一列的第一个元素是标识数据列中包含的文本。这些值中提取,用于填充列表框。

  • 第一列时间用于x设在块剩下的所有数据。

  • 每一列的所有行读入MATLAB。

创建绘图机接口

这个例子使用一个接口,使您从列表中选择的输入和响应数据。所有的数据都是策划作为时间的函数,您可以继续添加更多的数据图。每个数据图添加到图导致传奇扩张。

接口包含这些细节:

  • 传说,更新添加数据图

  • 清晰的按钮,使您能够清除所有的图表坐标轴

  • 保存按钮,保存图作为一个PNG文件,并将其添加到另一个Excel文件

  • 切换按钮,可以显示或隐藏Excel文件被访问

  • 图删除函数终止自动化服务器

选择和情节的数据

当你点击创建图按钮,其回调函数查询列表框来确定每个数据与项目选择和阴谋。MATLAB更新传说来显示新的数据同时仍然保持现有数据的传奇。

evnt函数plotButtonCallback (src) iSelected =(列表框,“价值”);网格(,'在');持有所有p = 1:长度(iSelected)开关iSelected (p)案例1情节(碰头,matData(:, 2)例2的情节(碰头,matData(:, 3)情况3情节(碰头,matData(:, 4)案例4情节(碰头,matData(:, 5)案例5情节(碰头,matData(:, 6)情况下6情节(碰头,matData(:, 7)否则disp(“选择数据绘制”)结束结束[b, c、g磅]=传奇([磅lBoxList (iSelected + 1)));% plotButtonCallback结束

清除轴

绘图仪是为了不断地添加图表作为用户选择列表框的数据。的清晰的图按钮清除并重置轴和清除变量用于存储图数据的标签(传奇)。

% %明显按钮回调函数clearButtonCallback (src, evt)班(一个“重置”)磅= ";% clearButtonCallback结束

显示或隐藏Excel文件

MATLAB程序访问的属性Excel应用程序中运行的自动化服务器。通过设置可见财产10,这个回调控制Excel文件的可见性。

% %显示或隐藏Excel文件函数dispButtonCallback思想(evt) src李世默。可见= (src,“价值”);% dispButtonCallback结束

关闭图和终止Excel自动化过程

自从Excel从MATLAB自动化服务器运行在一个单独的过程,您必须显式终止这个过程。没有理由让这个过程运行后关闭界面,这图的例子使用了删除Excel函数终止的过程辞职方法。您还需要终止Excel过程用于保存图形。终止这个过程的信息,请参阅MATLAB图形插入到Excel电子表格

% %终止Excel处理函数deleteFig exlWkbk (src, evt)。exlWkbk2关闭。思想密切李世默。exl2辞职。辞职结束% deleteFig

插入MATLAB图进Excel电子表格

您可以保存图形创建该接口的一个Excel文件。这个例子使用一个单独的Excel自动化服务器进程。的回调保存图像按钮创建图像,并将其添加到一个Excel文件:

  • 轴和传奇图配置复制到一个看不见的打印在屏幕上你看到的图(图PaperPositionMode属性设置为汽车)。

  • 打印命令创建了PNG图像。

  • 使用形状接口在Excel工作簿中插入图片。

在初始化阶段中实例化的服务器和接口:

exl2 = actxserver (“excel.application”);exlWkbk2 = exl2.Workbooks;世行=调用(exlWkbk2 '添加');graphSheet =调用(wb.Sheets '添加');形状= graphSheet.Shapes;

使用这个代码来实现保存图像按钮回调:

函数saveButtonCallback (src, evt) tempfig =图(“可见”、“了”、“PaperPositionMode”,“汽车”);tempfigfile = [tempname ' . png '];啊= findobj (f,“类型”,“轴”);copyobj(啊,tempfig) %复制图轴和轴传奇打印(tempfig,‘-dpng tempfigfile);Shapes.AddPicture (tempfigfile, 0, 1, 18300235);exl2。可见= 1;结束

运行示例

要运行示例,请选择列表框,然后点击任何物品创建图按钮。这个示例中提供的示例数据包含三个输入和三个相关联的响应数据集。这些数据集是策划与第一列在Excel文件,这是时间数据。

通过单击查看Excel数据文件显示Excel数据文件按钮。图的图像保存在一个不同的Excel文件,单击保存图像按钮。如果你有写访问权限在当前文件夹,然后保存图像在该文件夹选项创建一个临时的PNG文件。

这张图片显示了接口的输入/响应对在列表框中选择和策划轴。

Excel绘图仪输出示例。

要运行这个例子,请单击链接

另请参阅

相关的话题