【问题标题】:Export excel chart as picture (through automation)将excel图表导出为图片(通过自动化)
【发布时间】:2015-12-05 05:47:05
【问题描述】:

我正在尝试获取 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

【问题讨论】:

  • 刚刚编辑了问题

标签: matlab vba excel com


【解决方案1】:

excel Chart 对象有一个Export 方法。

微软文档: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图表制作。

【讨论】:

  • 绝对完美,非常感谢。像魅力一样工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多