HTML部分
<div id='xdkEcharts' style={{ height: 300 }}></div>
按 echarts文档,生成一个图表,关键:将生成的dom保存
let chartDom: any = document.getElementById('xdkEcharts');
let myChart: any = echarts.init(chartDom);
this.setState({ myChart })// react中将echarts保存
let option: any = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
toolbox: {
feature: {
saveAsImage: {}
}
},
series: [
{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}
}
]
};
return option && myChart.setOption(option)
echarts提供了获取图表的api
echarts官网:Documentation - Apache ECharts
这时候 代码种使用的this.state.myChart就是上面我们在生成echarts时候保存的dom
然后根据文档的getDataURL获得路径,最后将路径放到img元素中
最后我门执行导出
const html = `
<html>
<body>
<h1>测试列表</h1>
<img src=${this.state.myChart.getDataURL({
pixelRatio: 2,
backgroundColor: '#fff'
})} alt="" />
</body>
</html>
`;
// 导出
const blob = new Blob([html], {
type: 'application/msword',
});
const link = document.createElement('a');
link.download = '测试文件.doc';
link.href = URL.createObjectURL(blob);
link.click();
总结:
在生成echarts图表时,将echarts的dom保存
通过echarts文档的getDataURL生成图表的图片路径
将图片路径放在img元素中,然后放入html中
最后将html导出为word