echarts图表导出excel示例

 更新时间:2014年04月25日 09:15:31   作者:  
这篇文章主要介绍了echarts图表导出excel示例,需要的朋友可以参考下

根据传入的参数生成相应的图形

复制代码 代码如下:

loadChart : function(data,item){
  var that = this;
  require(['echarts', 'echarts/chart/bar', 'echarts/chart/line',
    'echarts/chart/pie'], function(ec) {
   that.body.setHeight(800);
   var myChart = ec.init(that.body.dom);
   myChart.showLoading({
    text : "图表数据正在努力加载..."
   });

   
    var option = {
     tooltip : {
      trigger : 'axis',
      axisPointer : { // 坐标轴指示器,坐标轴触发有效
       type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
      }
     },
     legend : {
      data : data.indis,
      x : 'left',
      y : 'top'
     },
     toolbox : {
      show : true,
      orient : 'vertical',
      x : 'right',
      y : 'center',
      feature : {
       mark : {
        show : true
       },
       dataView : {
        show : true,
        readOnly : true
       },
       magicType : {
        show : true,
        type : ['line', 'bar', 'stack', 'tiled']
       },
       restore : {
        show : true
       },
       saveAsImage : {
        show : true
       }
      }
     },
     calculable : true,
     animation : false,
     xAxis : [{
      type : 'category',
      data : data.grp
     }],
     yAxis : [{
      type : 'value',
      splitArea : {
       show : true
      }
     }],
     series : data.bar.series
    };
   }
   myChart.hideLoading();
   myChart.setOption(option);
   that.imgURL = myChart.getDataURL('png');//获取base64编码
  });

 },
initEChart : function(){
  require.config({
         paths:{
             'echarts':'js/com/bhtec/echart/echarts',
             'echarts/chart/bar' : 'js/com/bhtec/echart/echarts',
             'echarts/chart/line': 'js/com/bhtec/echart/echarts',
             'echarts/chart/pie': 'js/com/bhtec/echart/echarts'
         }
     });
 }

将数据传递到后台

复制代码 代码如下:

doExport : function(){

  var url = this.chartPanel.getImageURL();
  var title = Ext.fly('indi-display-title-id').first().dom.innerHTML;
  var left = Ext.getCmp("indi_pivotGrid_id").leftAxis.getTuples();
  var t = Ext.getCmp("indi_pivotGrid_id").topAxis.getTuples();

  //TODO  获取base64的图片编码
  Ext.Ajax.request({
   url : 'indicator/exp2excl.mvc',
   params : {
    imgURL:url,
    left:getS(left)
   }
  });
  function getS(d){
      var arr = [],str;
      for(var i=0;i<d.length;i++){
          var s = IndiFn.getAxisStr(d[i]);
          arr.push(s);
      }
      str = arr.join(',');
      return str;
  }
  var data = Ext.getCmp("indi_pivotGrid_id").extractData();
  var s,arr=[];
  for(var i=0;i<data.length;i++){
      arr.push(data[i]);
  }

  window.open('indicator/exportList2Excel.mvc?title='+encodeURIComponent(encodeURIComponent(title))+'&left='+encodeURIComponent(encodeURIComponent(getS(left)))+'' +
    '&top='+encodeURIComponent(encodeURIComponent(getS(t)))+'&data='+arr.join(';'));
 }

解析base64,生成图片

复制代码 代码如下:

public void base64TOpic(String fileName, HttpServletRequest req) {
  //对字节数组字符串进行Base64解码并生成图片
        if (imgsURl == null) //图像数据为空
            return ;
        BASE64Decoder decoder = new BASE64Decoder();
        try
        {
         String[] url = imgsURl.split(",");
         String u = url[1];
            //Base64解码
         byte[] buffer = new BASE64Decoder().decodeBuffer(u);
            //生成图片
            OutputStream out = new FileOutputStream(new File(req.getRealPath("pic/"+fileName+".jpg")));   
            out.write(buffer);
            out.flush();
            out.close();
            return;
        }
        catch (Exception e)
        {
            return;
        }
 }

通过poi画图,将图片放入到excel中

复制代码 代码如下:

row = sheet.createRow(index+3);
  HSSFCell headerCell = row.createCell(0);   
  headerCell.setCellType(HSSFCell.CELL_TYPE_BLANK); 
  headerCell.setCellValue(title);

  row = sheet.createRow(index + 6);
  HSSFCell cells = row.createCell(0);
  cells.setCellType(HSSFCell.CELL_TYPE_BLANK);
  ByteArrayOutputStream outStream = new ByteArrayOutputStream(); // 将图片写入流中
  BufferedImage bufferImg = ImageIO.read(new File(req.getRealPath("pic/"+fileName+".jpg")));
  ImageIO.write(bufferImg, "PNG", outStream); // 利用HSSFPatriarch将图片写入EXCEL
  HSSFPatriarch patri = sheet.createDrawingPatriarch();
  HSSFClientAnchor anchor = new HSSFClientAnchor(5, 5, 5, 5,
    (short) 1, index + 6, (short) 6, 45);
  patri.createPicture(anchor, workbook.addPicture(
    outStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
  try {
   workbook.write(out);
   out.flush();
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }

相关文章

  • 快速排序和分治排序介绍

    快速排序和分治排序介绍

    这篇文章主要介绍了快速排序和分治排序,需要的朋友可以参考下
    2015-04-04
  • Java编程删除链表中重复的节点问题解决思路及源码分享

    Java编程删除链表中重复的节点问题解决思路及源码分享

    这篇文章主要介绍了Java编程删除链表中重复的节点问题解决思路及源码分享,具有一定参考价值,这里分享给大家,供需要的朋友了解。
    2017-10-10
  • SpringBoot部署到腾讯云的实现示例

    SpringBoot部署到腾讯云的实现示例

    记录一下自己第一次部署springboot项目,本文主要介绍了SpringBoot部署到腾讯云的实现示例,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • java8新特性之接口的static和default的使用

    java8新特性之接口的static和default的使用

    这篇文章主要介绍了java8新特性之接口的static和default的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 微服务Redis-Session共享登录状态的过程详解

    微服务Redis-Session共享登录状态的过程详解

    这篇文章主要介绍了微服务Redis-Session共享登录状态,本文采取Spring security做登录校验,用redis做session共享,实现单服务登录可靠性,微服务之间调用的可靠性与通用性,需要的朋友可以参考下
    2023-12-12
  • jvm-jstack常用的用法示例

    jvm-jstack常用的用法示例

    jstack 是一个常用的用于分析 Java 进程的工具。它可以显示 Java 进程中所有线程状态和堆栈信息,帮助定位 Java 进程中的问题,这篇文章主要介绍了jvm-jstack常用的用法示例,需要的朋友可以参考下
    2023-06-06
  • java读取resources文件详解及实现代码

    java读取resources文件详解及实现代码

    这篇文章主要介绍了java读取resources文件详解及实现代码的相关资料,在开发项目的时候经常会遇到读取文件夹里面的内容,需要的朋友可以参考下
    2017-07-07
  • Spring BeanUtils忽略空值拷贝的方法示例代码

    Spring BeanUtils忽略空值拷贝的方法示例代码

    本文用示例介绍Spring(SpringBoot)如何使用BeanUtils拷贝对象属性忽略空置,忽略null值拷贝属性的用法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-03-03
  • Java实现PDF打印的解决方案

    Java实现PDF打印的解决方案

    今天小编就为大家分享一篇关于Java实现PDF打印的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 新手学习java反射基础

    新手学习java反射基础

    Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。下面我们来一起学习一下吧
    2019-06-06

最新评论