在Excel中打印MATLAB图形并调整其大小
我在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中,
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来说,有点类似的问题可能会有所帮助: