示例2:读取Excel工作表中的数据并处理

示例1用MATLAB在Excel工作表中写入数据,本例介绍用MATLAB打开一个Excel文件,读取工作表中的数据并进行处理。[大谦MATLAB,dqmatlab点com]

下面的代码用Workbooks集合对象的Open方法打开D盘下的Excel文件“学生成绩表.xlsx”,使之可见。

code.matlab
>;> %首先,打开一个Excel服务器
>> app=actxserver('excel.application');
>;> %插入一个新的工作薄
>> bk=app.Workbooks.Open('d:\学生成绩表.xlsx');
>> app.Visible=1;

文件打开后数据如图1-3工作表中A-F列所示,为某班同学五门课的考试成绩。现在要求计算每个同学的考试总分。

code.matlab
>;> %激活第1个表
>> shts=app.ActiveWorkbook.Sheets;
>> sht=shts.get('Item',1);
Document Image

图1-3 从MATLAB读取Excel数据并进行处理

考虑先从工作表中获取到成绩数据,默认时得到的是元胞数组表示的数据,将它转换为一般数组,然后用sum函数对行数据求和。

code.matlab
>;> %获取成绩数字,为元胞数组
>> rng=sht.get('Range', 'B2:F14');
>> A=rng.Value;
>;> %元胞数组转换为一般数组
>> H=cell2mat(A);
>;> %行数据求和
>> C=sum(H,2);

将总计数据转换为元胞数组,添加列名,拼接为总计列。

code.matlab
>;> %总计数据转换为元胞数组
>> D=num2cell(C);
>;> %组合总计列
>> E={'总计'};
>> F=[E;D];

在原有数据后面添加总计列。

code.matlab
>;> %全部数据
>> rng=sht.get('Range', 'A1:F14');
>> G=rng.Value;
>;> %原数据添加总计列
>> H=[G F];

将拼接后的数据保存到新的Excel文件。

code.matlab
>;> %保存元胞数组到Excel文件
>> writecell(H,'d:\学生成绩表2.xlsx')

退出Excel应用并删除它。

code.matlab
>> app.Quit;
>> app.delete;

整理后的工作表如图1-3所示。