将excel图表导出为图片(通过自动化)

Ler*_*ler 3 com excel matlab vba excel-vba

我试图处理一个excel图并通过MATLAB保存它.

到目前为止,我已经设法循环通过工作表并获得图形对象的句柄,但我无法保存它.
有谁知道如何将对象导出为jpgpng或其他图形格式?

我使用该SaveAs方法尝试了下面的代码,但它不起作用

Workbook = Workbooks.Open(['file.name]);
Sheets = Workbook.Sheets;
for i = 1:Sheets.Count
    Activesheet = get(Sheets, 'Item',i);
    for j = 1:Activesheet.ChartObjects.Count
        obj = Activesheet.ChartObjects(j);
        obj.SaveAs('asfasfa.jpg')

    end
end
Run Code Online (Sandbox Code Playgroud)

Hok*_*oki 5

excel Chart对象有一个Export方法.

Microsoft文档:Chart.Export方法(Excel)


例如,我test_save_chart.xlsx在第一张表中创建了一个带有图表的简单excel文件(已命名).要将此图表导出为PNG图片非常简单:

xfile = 'test_save_chart.xlsx' ;
exl = actxserver('excel.application');                  %// Create a COM server
exlFile    = exl.Workbooks.Open( [pwd '\' xfile] );     %'// Open the file

chartobj = exlFile.Sheets.Item('Sheet1').ChartObjects(1) ;                %// get a handle to the chart object
chartobj.Chart.Export('C:\TEMP\StackExchange\testChartExport.png','PNG')  %// export to PNG
Run Code Online (Sandbox Code Playgroud)

在你的情况下,在你的循环中,它很简单:

chartobj = Activesheet.ChartObjects(j) ;
chartobj.Chart.Export('your_filename_here.png','PNG')
Run Code Online (Sandbox Code Playgroud)

由于您是在循环中执行此操作,因此必须动态生成文件名(否则您将反复覆盖同一文件).

注意png格式推荐jpg,特别适用于excel图表生成的"线条艺术"风格.