当前位置:编程学习 > JAVA >>

JasperReport无法导出含有chart(饼形图)的execl.


源码如下,请大侠们帮忙看一下……


JRDataSource dataSource = new JRBeanCollectionDataSource(data);
 //获取模板存放的真实路径,绝对路径
 String reportFilePath  = getRequest().getSession().getServletContext().getRealPath("/report/report12.jasper");
 //定义一个输出流
         OutputStream ouputStream = getResponse().getOutputStream();
         // 设置输出格式,默认为pdf的格式,因为导出的Excel格式需要自己稍微的调整报表的大小,建议输出为pdf格式
   String contentType="pdf";
   //根据前台传递的参数判断导出的格式
   if ("xls".equals(format.toLowerCase())) {
  contentType = "xls";
   }
   //设定导出的格式
   getResponse().setContentType("application/" + contentType);
   //设定导出报表的格式
   getResponse().setCharacterEncoding("UTF-8");  
         //定义导出报表的名称和格式,如:机构类型表.xls或机构类型表.pdf
   getResponse().setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode("总收入分成比例表", "UTF-8")+"." +contentType);
         //定义一个模板导出器
         JRAbstractExporter exporter = new JRRtfExporter();
         //不同的格式导出器的方式不同,下面PDF和Excel为例
         if ("pdf".equals(format.toLowerCase())) {
  exporter = new JRPdfExporter(); //重新new一个PDF格式的导出器
  } else if ("xls".equals(format.toLowerCase())) {
  exporter = new JRXlsExporter();    // excel导出器
  exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, false);
  }
         //加载已经编译好的模板,编译好的模板格式为.jasper
 JasperReport report = (JasperReport)JRLoader.loadObject(reportFilePath);
 //此时,进行数据填充,report为Jasper文件,reportParameters为参数Map,dataSource为Connection
 //注意:此时MAP中的参数的key名称一定要和模板中定义的参数名称一致,负责会获取不到数据从而导致填充数据失败
 //第三个参数建议使用dataSource作为数据源,不建议使用Connection,因为
 //要在Ireport里写SQL语句,将需要的字段在SQL语句里输出出来,然后再拖拉构造模版文件。当报表比较复杂时,这种情况就需要写一些非常复杂的SQL语句
         JasperPrint jasperPrint = JasperFillManager.fillReport(report, reportParameters,dataSource);
//         getRequest().getSession().setAttribute( ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint); 
        // 设置要输出的jasper对象
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  // 设置输出流
  exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
  // 导出带有数据的报表
  exporter.exportReport();
  ouputStream.flush();
        ouputStream.close(); 
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,