zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    【解决方案】智能汽车制造车间通过EasyNVR实现无插件视频监控直播方案
    EasyNVR拉流成功后快照正常但实际不能播放解决方法
    EasyNVR现场设备离线后无法自动重连如何优化?
    TSINGSEE青犀视频优化EasyNVR快照保存机制实现过程
    EasyNVR中如何对kernel内核的异常关闭状态做监测?
    EasyNVR帐号密码无法正常登入系统界面问题排查
    EasyNVR使用HLS格式播放视频一段时间后自动停止的问题排查
    EasyNVR使用Mysql数据库无法启动该怎么处理?
    EasyNVR直播录像呈现片段式显示与什么有关?
    EasyNVR配置表单上传demo说明
  • 原文地址:https://www.cnblogs.com/sharpest/p/6163759.html
Copyright © 2011-2022 走看看