java導出echart圖到excel 多張圖片導出


分三步:

1.獲取echart圖的Base64碼

<input type="hidden" name="img" id="img" />

$('#img').val(myChart.getDataURL("png"));

2.解碼並生成圖片

public void createImg(HttpServletRequest request){
String uplodapath = "D:/temp/upload";
//生成圖片begin
String data = request.getParameter("img");
String imgname = "test.png";
String filedir = "D:/temp";
File file = new File(filedir);
if(!file.exists()){
file.mkdirs();
}
String[] url = data.split(",");
String u = url[1];
BASE64Decoder decoder = new BASE64Decoder();
// 生成圖片
try {
// Base64解碼
byte[] b = decoder.decodeBuffer(u);
OutputStream out = new FileOutputStream(new File(filedir+"\\" + imgname));
out.write(b);
out.flush();
out.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//圖片end
}

3.讀取圖片到excel

try {
XSSFWorkbook wb = new XSSFWorkbook();
//下載圖片到excel
//begin
BufferedImage bufferImg = null;
try {
//創建作圖sheet
XSSFSheet sheet1 = null;
if(wb.getSheet("echarts")==null){
sheet1 = wb.createSheet("echarts");
}else{
sheet1 = wb.getSheet("echarts");
}
//循環讀取圖片插入到excel
String filedir = "D:/temp";
File file = new File(filedir);
if(file.isDirectory()){
String[] files = file.list();
//畫圖的頂級管理器,一個sheet只能獲取一個(一定要注意這點)
XSSFDrawing patriarch = sheet1.createDrawingPatriarch();
int i = 0;
int rowbegin = 1;
int rowend = 8;
for(String _file : files){
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File(filedir + "\\" + _file));
ImageIO.write(bufferImg, "png", byteArrayOut);
//anchor主要用於設置圖片的屬性
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 1, rowbegin, (short) 5, rowend);
//插入圖片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG));
i++;
rowbegin = i*8+1;
rowend = rowbegin + 8;
}
}
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("test.xls", "GBK"));
OutputStream out = response.getOutputStream();
// 寫入excel文件
wb.write(out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//end
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

參考來源:https://www.cnblogs.com/sun-space/p/5672373.html

http://blog.csdn.net/qq_33212500/article/details/73274799


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM