MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?
Posted
技术标签:
【中文标题】MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?【英文标题】:MATLAB: How to paste fig Into excel, then save and close excel file? 【发布时间】:2020-08-30 15:28:05 【问题描述】:我在 MATLAB 中生成了一个 excel 文件,并成功保存并关闭它:
invoke(Workbook,'Save')
invoke(Excel,'Quit');
delete(Excel);
clear Excel;
但是,当我使用 PlotInExcel 将图形添加到该 excel 文件时,我无法再次使用相同的代码保存和关闭文件。这是PlotInExcel:
function PlotInExcel
x= 1:10;
a= cell2mat(x);
y= 1:10;
b= cell2mat(y);
%............plotting......................
plot(a,b);
xlabel('X Values');
ylabel('Y Values');
print -dmeta; %.................Copying to clipboard
FILE = 'C:DATA.xlsx';
Range='OL14';
%.............excel COM object...........................................
Excel = actxserver ('Excel.Application');
Excel.Visible = 1;
if ~exist(FILE,'file')
ExcelWorkbook=Excel.Workbooks.Add;
ExcelWorkbook.SaveAs(FILE);
ExcelWorkbook.Close(false);
end
invoke(Excel.Workbooks,'Open',FILE); %Open the file
ActiveSheet = Excel.ActiveSheet;
ActiveSheetRange = get(ActiveSheet,'Range',Range);
ActiveSheetRange.Select;
ActiveSheetRange.PasteSpecial; %.................Pasting the figure to the selected location
%-----------------------------------end of function"PlotInExcel----------
我如何让 MatLab 现在保存这个文件并退出?上面的上述代码现在不起作用。有没有办法在函数中添加代码?或者我可以/应该在我的脚本中保存/关闭函数之外的文件吗?
【问题讨论】:
也许,这里的问题:“FILE = 'C:DATA.xlsx';”?你忘了'\'? 谢谢,但这只是我的查询中的一个错字......不是实际代码的一部分。你是对的,该行应该是“FILE = 'C:\DATA.xlsx';”。但这并没有(没有)解决问题或回答如何保存和退出 excel。 你看到了吗? mathworks.com/help/matlab/matlab_external/… 谢谢!让我检查一下。看起来有点不同的代码。可以工作。 嗯...我仍然无法让 PlotInExcel 保存、关闭和退出,以便我可以将更多数据添加到我的 excel 文件以及稍后在脚本中添加第二个图形。 Excel 文件在第一次通过 PlotInExcel 后挂起打开 【参考方案1】:经过足够多的抨击,我终于能够回答我自己的问题了。如果其他人遇到此问题,我将在此处发布解决方案。我一开始就去掉了这些线,因为它们只是产生了一个测试图。下面的函数假设您有自己的图形要粘贴到 Excel 电子表格中。顺便说一句,在运行此函数之前,您必须将您的图形保存到剪贴板。
function PlotInExcel
FILE = 'C:\DATA.xlsx'; %identify the name and location of your excel spreadsheet
Range='R1'; %select where you want your figure pasted in the speadsheet (cell ID)
%.............excel COM object............................................................................
Excel = actxserver ('Excel.Application');
Excel.Visible = 1;
if ~exist(FILE,'file')
ExcelWorkbook=Excel.Workbooks.Add;
ExcelWorkbook.SaveAs(FILE);
ExcelWorkbook.Close(false);
end
invoke(Excel.Workbooks,'Open',FILE); %Open the file
ActiveSheet = Excel.ActiveSheet;
ActiveSheetRange = get(ActiveSheet,'Range',Range);
ActiveSheetRange.Select;
ActiveSheetRange.PasteSpecial; %.................Pasting the figure to the selected location
Excel.ActiveWorkbook.Save % Now save the workbook
if eq(Excel.ActiveWorkbook.Saved,1)
Excel.ActiveWorkbook.Close;
else
Excel.ActiveWorkbook.Save;
end
invoke(Excel, 'Quit'); % Quit Excel
delete(Excel); % End process
end
【讨论】:
以上是关于MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何把MATLAB行数据粘贴成EXCEL中的列数据,MATLAB中是1行7200列,怎么保存成EXCEL中7200行1列的数据?
如何将 Matlab warp 的表面图输出传递给 export_fig?