示例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);
图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所示。