ECharts 图表导出功能实现指南
一 内置工具栏一键导出
const option = {
toolbox: {
feature: {
saveAsImage: {
show: true,
type: 'png', // 可选 'jpeg';部分版本支持 'svg'
pixelRatio: 2,
backgroundColor: '#fff',
excludeComponents: ['toolbox'],
name: 'my-chart'
}
}
}
};
二 编程式导出 Canvas SVG PDF
const chart = echarts.init(document.getElementById('chart'));
chart.exportToCanvas({ pixelRatio: 2 }).then(canvas => {
const a = document.createElement('a');
a.download = 'chart.png';
a.href = canvas.toDataURL('image/png');
a.click();
});
// 若图表使用 SVG 渲染器,可直接获取;否则用 exportToSVG 导出
const svgStr = chart.getOption().renderer === 'svg'
? chart.getSVG()
: await chart.exportToSVG();
const blob = new Blob([svgStr], { type: 'image/svg+xml' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.download = 'chart.svg';
a.href = url;
a.click();
URL.revokeObjectURL(url);
import jsPDF from 'jspdf';
chart.exportToCanvas({ pixelRatio: 2 }).then(canvas => {
const pdf = new jsPDF({ orientation: 'landscape' });
const imgData = canvas.toDataURL('image/png');
pdf.addImage(imgData, 'PNG', 10, 10, 280, 160); // 位置与尺寸可按需调整
pdf.save('chart.pdf');
});
三 导出图表数据 CSV Excel
function getChartData(chart) {
const opt = chart.getOption();
if (opt.dataset) return processDataset(opt.dataset);
return processSeriesData(opt.series);
}
function convertToCSV(data) {
const headers = Object.keys(data[0]).join(',');
const rows = data.map(r => Object.values(r).join(','));
return [headers, ...rows].join('\n');
}
function downloadFile(content, fileName, mime) {
const blob = new Blob([content], { type: mime });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url; a.download = fileName; a.click();
setTimeout(() => URL.revokeObjectURL(url), 100);
}
// 导出 CSV
const csv = convertToCSV(getChartData(chart));
downloadFile(csv, 'chart-data.csv', 'text/csv');
// 导出“Excel”(CSV 格式,.xls 扩展名)
downloadFile(csv, 'chart-data.xls', 'application/vnd.ms-excel');
四 常见问题与优化
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。