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

时间:2015-09-09 09:58:02

标签: excel matlab vba excel-vba com

我正试图处理excel图并通过MATLAB保存它。

到目前为止,我已设法循环使用工作表并获取图形对象的处理但我无法保存它 有谁知道如何将对象导出为write.xlsx(datasetr_df, file = file.path("Out_Put_Dir_Path", paste0("Manually_writting_name_output_name_same_as_Input_Dir",".xlsx")),sheetName="Sheet1",col.names=TRUE, row.names=FALSE) jpg或其他图形格式?

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

SaveAs

1 个答案:

答案 0 :(得分:5)

excel Chart对象采用Export方法。

Microsoft文档:Chart.Export Method (Excel)

对于该示例,我在第一张表中创建了一个带有图表的简单excel文件(名为test_save_chart.xlsx)。要将此图表导出为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

在你的情况下,在循环中,它就像:

一样简单
chartobj = Activesheet.ChartObjects(j) ;
chartobj.Chart.Export('your_filename_here.png','PNG')

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

请注意,建议png格式优于jpg格式,特别适用于"线条艺术"像excel图表一样的图片风格。