在Excel中打印MATLAB图形并调整其大小

在Excel中打印MATLAB图形并调整其大小,excel,matlab,activex,office-interop,Excel,Matlab,Activex,Office Interop,我在MATLAB中有两个带有句柄的图形hFig1和hFig2。我想将它们打印到Excel中的特定单元格(单元格E3和I3)中,并将它们重塑为每一个[2in x 3in] 我尝试过使用.AddPictures对象处理程序和print-dmeta,但我找不到一种方法来实现我的三个目标 我同时也在将数据写入excel,因为有很多数据行被发送,我希望有一个不需要通过ActiveXServer不断调用excel的方法 有人有解决这类问题的好方法或资源吗?您可以最轻松地将MATLAB图形添加到Excel中,

我在MATLAB中有两个带有句柄的图形
hFig1
hFig2
。我想将它们打印到Excel中的特定单元格(单元格E3和I3)中,并将它们重塑为每一个[2in x 3in]

我尝试过使用
.AddPictures
对象处理程序和
print-dmeta
,但我找不到一种方法来实现我的三个目标

我同时也在将数据写入excel,因为有很多数据行被发送,我希望有一个不需要通过ActiveXServer不断调用excel的方法


有人有解决这类问题的好方法或资源吗?

您可以最轻松地将MATLAB图形添加到Excel中,如下所示:

% Create some arbitrary graphics
f1 = figure; peaks; f2 = figure; membrane;

% Connect to Excel, make it visible and add a worksheet
xl = actxserver('Excel.Application'); set(xl,'Visible',1);
xl.Workbooks.Add(1); xls = xl.ActiveSheet;

% Paste in the MATLAB figures
print(f1, '-dbitmap'); xls.Range('E3').PasteSpecial;
print(f2, '-dbitmap'); xls.Range('I3').PasteSpecial;
我不确定你说的2英寸乘3英寸的图像到底是什么意思。这是屏幕上的尺寸吗?什么决议?还是打印时的尺寸

可以直接以点为单位指定图像的大小和位置:

xls.Shapes.Item(1).PictureFormat.CropLeft  = 30;
xls.Shapes.Item(1).PictureFormat.CropRight  = 30;
xls.Shapes.Item(1).Height  = 200;
xls.Shapes.Item(1).Left = xls.Range('E3').Left;
但是如果你想要以英寸为单位,你需要一种转换为点的方式,这取决于它的显示方式

您提到您一直在使用
actxserver
调用Excel;您是否在每次写入数据时都会反复连接?您可能不需要这样做——更可能的情况是,您可以保持单个连接处于打开状态,并将每个数据写入其中,然后保存文件并关闭连接


Excel对象模型的一个很好的参考资源是Microsoft。不过,这不是一个容易阅读的问题:)

对于微软Word来说,有点类似的问题可能会有所帮助: