JasperReports项目中的应用

转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html

2.业务处理

 1      //返回报表查询结果     
    List<ReportElectronicAccountMapping> list=bndStoreImportService.queryElectronicAccount(bndReportParam); 2 if(list.size()>0){
          //生成JasperPrint对象
3 JasperPrint jp=JasperReportUtil.getPrint(JsonMapper.toJsonString(list), bndReportParam, request); 4 //返回分页信息 5 response.setHeader("maxPages", jp.getPages().size()+""); 6 response.setHeader("pageNo", request.getParameter("pageNo"));
        //导出报表
7 JasperReportUtil.getExporter(bndReportParam, request, response, jp).exportReport(); 8 }else{ 9 response.setHeader("error",JasperReportUtil.stringToUnicode("没有查询到电子账册相关数据!")); 10 }

3.

 1         String reportName=bndReportParam.getReportName();
 2         //文件路径
 3         String jasperModelpath = request.getSession().getServletContext().getRealPath("/WEB-INF/views/modules/bus/pcd/bonded/report/")+File.separator;
 4 //        String pp=Global.getProjectPath();
 5         //读取项目下此路径的报表样式文件
 6         File reportFile = new File(jasperModelpath+reportName+".jasper");
 7 //编译报表,读取jasperreport文件 生成JasperReport对象
 8         JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportFile.getPath());
 9         
10         //文件路径,这里单独保存一份,供有子表功能的报表提供路径。
11         bndReportParam.setSubUrl(jasperModelpath);
12         
13         Map<String, Object> parameters = Maps.newHashMap();
14         parameters.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH);
15         parameters.put(JRParameter.REPORT_LOCALE, Locale.US);
16 
17 //各种报表样式处理结果
18         if (reportName.equals("ReportAccount")) {
19             jasperPrint=reportAccount(bndReportParam, parameters, jasperReport, json);
20         }else if(reportName.equals("ReportWarning")){
21             jasperPrint=reportWarning(bndReportParam, parameters, jasperReport, json);
22         }else if(reportName.equals("ReportDisposeStatistics")){
23             jasperPrint=reportDisposeStatistics(bndReportParam, parameters, jasperReport, json);
24         }else if(reportName.equals("ReportLoss")){
25             jasperPrint=reportLoss(bndReportParam, parameters, jasperReport, json);
26         }else if(reportName.equals("ReportFree")){
27             jasperPrint=reportFree(bndReportParam, parameters, jasperReport, json);
28         }else if(reportName.equals("ReportDispose")){
29             jasperPrint=reportDispose(bndReportParam, parameters, jasperReport, json);
30         }else if(reportName.equals("ReportCompare")){
31             jasperPrint=reportCompare(bndReportParam, parameters, jasperReport, json);
32         }else if(reportName.equals("ReportRepair")){
33             jasperPrint=reportRepair(bndReportParam, parameters, jasperReport, json);
34         }
35         return jasperPrint;

4.完善报表信息,填充数据

 1         //判断保税仓库还是自贸区仓库
 2         String storage="";
 3         if(bndReportParam.getBndStore()==null){
 4             storage=bndReportParam.getFtaStore().getName();
 5         }else{
 6             storage=bndReportParam.getBndStore().getName();
 7         }
 8         parameters.put("storage", storage);
 9         parameters.put("goodsType", bndReportParam.getBasCargoJt().getName());
10         parameters.put("title", "电子账册");
11         parameters.put("queryDate", DateUtils.formatDate(bndReportParam.getBeginDate(), "yyyy-MM-dd")
12                                     +"至"+DateUtils.formatDate(bndReportParam.getEndDate(), "yyyy-MM-dd"));
13         InputStream is = null;
14         is = new ByteArrayInputStream(json.getBytes("utf-8"));
15         parameters.put("JSON_INPUT_STREAM", is);
16         return JasperFillManager.fillReport(jasperReport, parameters);

5.导出报表

 1         List<ReportElectronicAccountMapping> list=bndStoreImportService.queryElectronicAccount(bndReportParam);
 2         if(list.size()>0){
 3             JasperPrint jp=JasperReportUtil.getPrint(JsonMapper.toJsonString(list), bndReportParam, request);
 4             //返回分页信息
 5             response.setHeader("maxPages", jp.getPages().size()+"");
 6             response.setHeader("pageNo", request.getParameter("pageNo"));
 7             JasperReportUtil.getExporter(bndReportParam, request, response, jp).exportReport();
 8         }else{
 9             response.setHeader("error",JasperReportUtil.stringToUnicode("没有查询到电子账册相关数据!"));
10         }

6.

 1     @SuppressWarnings("rawtypes")
 2     public static JRAbstractExporter getExporter(BndReportParam bndReportParam, HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws Exception{
 3         JRAbstractExporter exporter=null;
 4         if(bndReportParam.isPdf()){
 5             //PDF
 6             exporter=showPDF(request, response, jasperPrint);
 7         }else if(bndReportParam.isExcel()){
 8             //Excel
 9             exporter=showExcel(request, response, jasperPrint);
10         }else if(bndReportParam.isPrint()){
11             //打印
12             exporter=print(request, response, jasperPrint);
13         }else{
14             //页面展示
15             exporter=showHTML(request, response, jasperPrint);
16         }
17         return exporter;
18     }

7.showPDF

 1     public static JRPdfExporter showPDF(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
 2         OutputStream outputStream = response.getOutputStream();
 3         
 4         response.setContentType("application/pdf");
 5 
 6         JRPdfExporter exporter = new JRPdfExporter();
 7 
 8         exporter.setExporterInput(new SimpleExporterInput(
 9                 jasperPrint));
10         exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
11                 outputStream));
12         return exporter;
13     }

8.

 1     public static JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> showExcel(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
 2         OutputStream outputStream = response.getOutputStream();
 3         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
 4         response.setHeader("Content-Disposition",
 5                 "inline; filename="file.xlsx"");
 6 
 7         JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> exporter = new JRXlsxExporter();
 8 
 9         exporter.setExporterInput(new SimpleExporterInput(
10                 jasperPrint));
11         exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
12                 outputStream));
13 
14         SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
15         configuration.setOnePagePerSheet(false);
16         configuration.setWhitePageBackground(false);
17         configuration.setShowGridLines(false);
18         exporter.setConfiguration(configuration);
19 
20         return exporter;
21     }

9.

 1 public static HtmlExporter print(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
 2         OutputStream outputStream = response.getOutputStream();
 3         HtmlExporter exporter = new HtmlExporter();
 4         SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream);
 5         
 6         request.getSession()
 7         .setAttribute(
 8                 ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
 9                 jasperPrint);
10         WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
11                 "image?time=" + new Date().getTime() + "&image={0}");
12         output.setImageHandler(webHtmlResourceHandler);
13         
14         exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
15         exporter.setExporterOutput(output);
16         //报表打印
17         response.getOutputStream().print("<script src=""+request.getContextPath()+"/static/print/print.js" type="text/javascript"></script><link href=""+request.getContextPath()+"/static/print/print.css" type="text/css" rel="stylesheet">");
18         return exporter;
19     }
20     

10.showHTML

 1     public static HtmlExporter showHTML(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
 2         OutputStream outputStream = response.getOutputStream();
 3         HtmlExporter exporter = new HtmlExporter();
 4         SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream);
 5 
 6         request.getSession()
 7                 .setAttribute(
 8                         ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
 9                         jasperPrint);
10         WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
11                 "image?time=" + new Date().getTime() + "&image={0}");
12         output.setImageHandler(webHtmlResourceHandler);
13 
14         exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
15         exporter.setExporterOutput(output);
16 
17         // configuration
18         SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
19         //设置当前页数
20         configuration.setPageIndex(Integer.parseInt(request.getParameter("pageNo"))-1);
21 
22         exporter.setConfiguration(configuration);
23 
24         return exporter;
原文地址:https://www.cnblogs.com/sharpest/p/6163759.html