转自: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. }

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;

JasperReports项目中的应用的更多相关文章

  1. javaweb项目中关于配置文件web.xml的解析

    一..启动tomcat,加载项目中的web.xml文件,创建servercontext上下文对象. 可以通过servercontext对象在应用中获取web.xml文件中的值. web应用加载的顺序与 ...

  2. VS项目中使用Nuget还原包后编译生产还一直报错?

    Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...

  3. ABP项目中使用Swagger生成动态WebAPI

    本文是根据角落的白板报的<使用ABP实现SwaggerUI,生成动态webapi>一文的学习总结,感谢原文作者角落的白板报. 1 安装Swashbuckle.core 1.1 选择WebA ...

  4. iOS 之项目中遇到的问题总结

    昨天去一家公司面试,面试官问了我在项目开发中遇到过哪些问题,是什么引起的,怎样解决的? 当时由于有点小紧张只说出了一两点,现在就来好好总结一下. 问题: 1.两表联动 所谓的两表联动就是有左右两个表格 ...

  5. My97DatePicker时间控件在项目中的应用

    一.下载My97DatePicker的压缩包My97DatePicker.rar,解压. 注:My97DatePicker最新版本有开发包,项目中使用时删掉,以便节省空间,提高程序的运行效率. 二.在 ...

  6. 在项目中同时使用Objective-C和Swift

    苹果发布的Swift语言可以和之前的Objective-C语言同时存在于一个项目中. 可能有人会认为是同一个类文件中既可以有Objective-C也可以有Swift,这是不对的.同一个类文件或同一个代 ...

  7. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  8. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  9. Web API项目中使用Area对业务进行分类管理

    在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加 ...

随机推荐

  1. QT修改应用程序图标

    要准备一个ico的图标,必须是ico格式,切记!! 可以用png或者其他的在线转换:http://www.easyicon.net/covert/ 用记事本 新建文件icon.rc,内容为: IDI_ ...

  2. ubuntu service XXX start启动报start: Rejected send message, 1 matche

    service cron restart命令报错如下: stop: Rejected send message, 1 matched rules; type="method_call&quo ...

  3. 20165101刘天野 2018-2019-2《网络对抗技术》Exp7 网络欺诈防范

    目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp7 网络欺诈防范 1.实验内容 1.1 简单应用SET工具建立冒名网站 1.2 ettercap DNS spoo ...

  4. 本地储存(localStorage)记录

    - 本地存储 + localStorage.getItem("search_history") 获取本地存储 + localStorage.setItem("a" ...

  5. File Space——一个java structs2.0的小栗子(DIY)

    1 概述 File Space系统适用于团体,主要提供的是团队文件分享以及个人文件的存储管理服务.分为个人文件存储管理平台和团队文件共享平台. 个人文件存储平台主要为个人提供相关的文件分类存储服务:该 ...

  6. 剑指offer之 数值的整数次方

    问题描述:实现函数double power(double base,int exponent),求base的exponent次方.不能使用库函数,同时不需要考虑大数问题. package Proble ...

  7. 数据库+maven

    1.mysql <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...

  8. hdu 1003 Max Sum(基础dp)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. GeoServer基础教程(二):GeoServer的Web管理界面快速入门

    转载:http://blog.163.com/daimiao_study/blog/static/248923117201542522742373/ GeoServer的控制和管理是基于网页形式,所有 ...

  10. Appium-关于appium的原生控件的 xpath 定位问题及常用方法

    最近遇到的项目,发现很多元素,都没有标明id.text.content-desc,classname中又有很多是相同,导致无法定位 第一,appium1.5及之后的版本废弃了name属性(如name= ...