2011-06-27 34 views
2

我在MATLAB中有兩個數字,其手柄爲hFig1hFig2。我想將它們打印到Excel中的特定單元格(單元格E3和I3),並將它們重新整形爲[2in x 3in]。在Excel中打印並調整MATLAB圖的大小

我嘗試過使用.AddPictures對象處理程序並使用print -dmeta,但我找不到實現我所有三個目標的方法。

我也在同時寫入數據,因爲有很多數據線被髮送,我希望有一個方法,不需要連續調用ActiveXServer的Excel。

有沒有人有這種問題的好方法或資源?

+0

有點類似的MS-Word的問題,可能會幫助:[裁剪MS Word圖像使用Matlab的ActiveX控件](http://stackoverflow.com/questions/7617124/crop-ms-字圖像 - 使用與Matlab的ActiveX控制/ 7617438#7617438) – Amro

回答

3

你可以很容易地添加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; 

我不知道你通過使由3英寸2英寸的圖像意味着什麼。這是屏幕上的大小?在什麼決議?還是打印時的尺寸?

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

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 documentation。這不是一個簡單的閱讀,雖然:)