/*
*实现思路:从前端获取Echarts加载好的图片,传入后台,生成你想要的Excel表
*记录我遇到的坑
*/
//首先定义Echarts图一个 必须给宽高 和显示
在这一步 有两个重点注意的
1.在Echarts的加载Option里 配置 animation:false 去掉加载时候的动画效果
如果不去掉 获取到的Echart的图 不全 因为有动画
2.获取图片的方法 myChart.getDataURL("png");
//定义FormData 为了传入后台
把获取到的图片转为blob 类似于file格式 这是在网上找的方法
地址:http://www.blogjava.net/jidebingfeng/articles/406171.html
/**
* 将以base64的图片url数据转换为Blob
* @param urlData
* 用url方式表示的base64图片数据
*/
function convertBase64UrlToBlob(urlData){
var bytes=window.atob(urlData.split(',')[1]); //去掉url的头,并转换为byte
//处理异常,将ascii码小于0的转换为大于0
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
return new Blob( [ab] , {type : 'image/png'});
}
var formData = new FormData(document.getElementById('formId'));
//FormData 有一个Append方法 可以加参数
formData.append("name",value);
//后台获取图片 放入Excel poi中 用的WritableWorkbook workbook = Workbook.createWorkbook(out);
//宽 高 的单位都是以默认单元格的大小定义的
WritableImage wImage = new WritableImage(x, y, 宽, 高, 图片文件);
wsheet.addImage(wImage3);
//输出Excel