将 excel 图表导出为图片(通过自动化)
Export excel chart as picture (through automation)
我正在尝试获取 excel 图的句柄并通过 MATLAB 将其保存。
到目前为止,我已经设法循环浏览工作表并获得图形对象的句柄,但我无法保存它。
有谁知道如何将对象导出为 jpg
或 png
或其他图形格式?
我使用 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
excel Chart
对象有一个 Export
方法。
微软文档:Chart.Export Method (Excel)
例如,我创建了一个简单的 excel 文件(名为 test_save_chart.xlsx
),第一个 sheet 中有一个图表。将此图表导出为 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
,特别适用于 "line art" 风格的图片,如 excel 图表制作。
我正在尝试获取 excel 图的句柄并通过 MATLAB 将其保存。
到目前为止,我已经设法循环浏览工作表并获得图形对象的句柄,但我无法保存它。
有谁知道如何将对象导出为 jpg
或 png
或其他图形格式?
我使用 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
excel Chart
对象有一个 Export
方法。
微软文档:Chart.Export Method (Excel)
例如,我创建了一个简单的 excel 文件(名为 test_save_chart.xlsx
),第一个 sheet 中有一个图表。将此图表导出为 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
,特别适用于 "line art" 风格的图片,如 excel 图表制作。