在Excel中打印并调整MATLABgraphics的大小

MATLAB中有两个graphics,分别是hFig1hFig2 。 我想将它们打印到Excel中的特定单元格(单元格E3和I3),并将它们重新整形为[2in x 3in]。

我曾尝试使用.AddPictures对象处理程序并使用print -dmeta ,但是我找不到实现所有三个目标的方法。

我也是在写数据的同时,因为有很多数据线被发送,我希望有一个方法,不需要不断地调用excel与ActiveXServer。

有没有人有这种问题的好方法或资源?

您可以像这样最简单地将MATLABgraphics添加到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; 

我不确定你的意思是通过3in的图像2in。 这是在屏幕上的大小? 在什么决议? 还是打印时的尺寸?

您可以直接指定图像的大小和位置

 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; 每次你写每一条数据的时候,你是不是连接了一遍又一遍呢? 您可能不需要这样做 – 更可能的是,您可以保持一个连接打开并写入每个数据片段,然后保存该文件并closures连接。

Microsoft对象模型的一个很好的参考资源是Microsoft 文档 。 这不是一个容易的阅读,虽然:)