MATLAB编码思路如下:
1.创建一个 Excel 应用程序对象;
2.打开指定路径中的Excel表格;
3.将plot生成的图片打印到剪切板上;
4.设置图片在Excel的位置,以及Excel表格的大小;
5.保存并关闭工作簿;
6.关闭Excel应用程序实例并释放与之关联的资源。
说明:其中第1、5、6三步为固定格式代码,在第2、3、4步中可根据实际需求设置Excel的路径、图片清晰度(dpi)、图片粘贴的位置(Sheet)及表格的行高(RowHeight)列宽(ColumnWidth)。源代码如下所示:
clc;clf;close;
%% plot生成图片
pic = figure(1);
x=1:100;
y=sin(x);
plot(x,y);grid on;
%% 导入Excel
% 1.通过 actxserver 函数创建一个 Excel 应用程序对象,并设置其为可见状态
objExcel = actxserver('Excel.Application');
objExcel.Visible = true;
% 2.打开指定路径中的Excel表格,并将其激活
excelWorkbook = objExcel.Workbooks.Open('D:\DeskTemp\Temp.xlsx'); % 路径及文件名称需根据实际情况修改
excelSheet = excelWorkbook.ActiveSheet;
% 3.设置打印分辨率,此处dpi设为 60 .数值愈大,图像的清晰度愈高
dpi = 60 ;
% 将plot绘制的图形以指定的分辨率打印到剪贴板上, pic为figure(1)的句柄,打印图片的格式是位图(-dbitmap)。
print(pic, sprintf('-r%d', dpi), '-clipboard', '-dbitmap');
% 4.设置图片打印的位置、表格的行高与列宽
Str = 'A'; RowNum = 1 ;
Sheet = [Str,num2str( RowNum )]; %Sheet变量确定单元格位置
excelSheet.Range( Sheet ).PasteSpecial(); %将图像粘贴到Sheet变量指定的单元格
excelSheet.Columns.Item(Str).ColumnWidth = 48.33; %设置列宽
excelSheet.Rows.Item( RowNum ).RowHeight = 198.6; %设置行高
% 5.保存并关闭工作簿
excelWorkbook.Save;
excelWorkbook.Close();
% 6.关闭Excel应用程序实例并释放与之关联的资源
objExcel.Quit();
objExcel.delete();
运行前后结果:
运行前,在D:\DeskTemp中新建空白表格Temp.xlsx
代码运行后,可见plot生成的图片已导出至A1表格中。(MATLAB代码运行时需关闭Temp.xlsx)