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工作空间的数据复制粘贴到Excel中的问题

如何将 Matlab warp 的表面图输出传递给 export_fig?

matlab中,如何将.txt格式文件转换成.mat格式文件

如何将matlab 中的数据写入现有的word 表格中?

如何从matlab的fig图片以统一格式导出