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

2.业务处理

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

3.

         String reportName=bndReportParam.getReportName();
//文件路径
String jasperModelpath = request.getSession().getServletContext().getRealPath("/WEB-INF/views/modules/bus/pcd/bonded/report/")+File.separator;
// String pp=Global.getProjectPath();
//读取项目下此路径的报表样式文件
File reportFile = new File(jasperModelpath+reportName+".jasper");
//编译报表,读取jasperreport文件 生成JasperReport对象
JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportFile.getPath()); //文件路径,这里单独保存一份,供有子表功能的报表提供路径。
bndReportParam.setSubUrl(jasperModelpath); Map<String, Object> parameters = Maps.newHashMap();
parameters.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH);
parameters.put(JRParameter.REPORT_LOCALE, Locale.US); //各种报表样式处理结果
if (reportName.equals("ReportAccount")) {
jasperPrint=reportAccount(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportWarning")){
jasperPrint=reportWarning(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportDisposeStatistics")){
jasperPrint=reportDisposeStatistics(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportLoss")){
jasperPrint=reportLoss(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportFree")){
jasperPrint=reportFree(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportDispose")){
jasperPrint=reportDispose(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportCompare")){
jasperPrint=reportCompare(bndReportParam, parameters, jasperReport, json);
}else if(reportName.equals("ReportRepair")){
jasperPrint=reportRepair(bndReportParam, parameters, jasperReport, json);
}
return jasperPrint;

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

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

5.导出报表

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

6.

     @SuppressWarnings("rawtypes")
public static JRAbstractExporter getExporter(BndReportParam bndReportParam, HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws Exception{
JRAbstractExporter exporter=null;
if(bndReportParam.isPdf()){
//PDF
exporter=showPDF(request, response, jasperPrint);
}else if(bndReportParam.isExcel()){
//Excel
exporter=showExcel(request, response, jasperPrint);
}else if(bndReportParam.isPrint()){
//打印
exporter=print(request, response, jasperPrint);
}else{
//页面展示
exporter=showHTML(request, response, jasperPrint);
}
return exporter;
}

7.showPDF

     public static JRPdfExporter showPDF(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
OutputStream outputStream = response.getOutputStream(); response.setContentType("application/pdf"); JRPdfExporter exporter = new JRPdfExporter(); exporter.setExporterInput(new SimpleExporterInput(
jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
outputStream));
return exporter;
}

8.

     public static JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> showExcel(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
OutputStream outputStream = response.getOutputStream();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition",
"inline; filename=\"file.xlsx\""); JRXlsAbstractExporter<XlsxReportConfiguration, XlsxExporterConfiguration, JRXlsxExporterContext> exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(
jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(
outputStream)); SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setOnePagePerSheet(false);
configuration.setWhitePageBackground(false);
configuration.setShowGridLines(false);
exporter.setConfiguration(configuration); return exporter;
}

9.

 public static HtmlExporter print(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
OutputStream outputStream = response.getOutputStream();
HtmlExporter exporter = new HtmlExporter();
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream); request.getSession()
.setAttribute(
ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
jasperPrint);
WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
"image?time=" + new Date().getTime() + "&image={0}");
output.setImageHandler(webHtmlResourceHandler); exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(output);
//报表打印
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\">");
return exporter;
}

10.showHTML

     public static HtmlExporter showHTML(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException{
OutputStream outputStream = response.getOutputStream();
HtmlExporter exporter = new HtmlExporter();
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(outputStream); request.getSession()
.setAttribute(
ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
jasperPrint);
WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler(
"image?time=" + new Date().getTime() + "&image={0}");
output.setImageHandler(webHtmlResourceHandler); exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(output); // configuration
SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
//设置当前页数
configuration.setPageIndex(Integer.parseInt(request.getParameter("pageNo"))-1); exporter.setConfiguration(configuration); 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. Apache Shiro 使用手册(二)Shiro 认证(转发:http://kdboy.iteye.com/blog/1154652)

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的“实体/凭证”组合便是“用户名/密码”组合. 一. ...

  2. nc传文件

    nc传文件 先启动接收方 nc -l -p 9999 > index.lua 后启动发送方 nc 192.168.1.1 9999 < index.lua

  3. html5 canvas做的图表插件

    用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...

  4. iOS 图文混排 链接 可点击

    对于这个话题 我想到 1 第一个解决方法就是使用 webView 比较经典 把所有复杂工作都交给控件本身去处理了,  但是好像好多需要自定义的地方 没法从 webView获得响应回调 :(估计也可以实 ...

  5. [原创]java WEB学习笔记35:java WEB 中关于绝对路径 和相对路径问题

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. IE浏览器和CSS盒模型【转】

    总结:css盒模型在不同浏览器之间(例如:ie和其他浏览器 如火狐)的差异只存在于ie6之前的版本中,如ie5.在ie6下, Internet Explorer 在标准模式下渲染时使用了 CSS 规范 ...

  7. MYSQL函数 Cast和convert的用法详解

    MYSQL Cast函数是非常重要的MYSQL函数,下面就将为您详细介绍MYSQL Cast函数的语法及其使用,希望能让您对MYSQL Cast函数有更多的认识. BINARY     BINARY操 ...

  8. matlab之viscircles()函数

    函数功能:画圆 语法: viscircles(centers,radii) viscircles(ax,centers,radii) viscircles(___,Name,Value) h = vi ...

  9. jquery插件之jquery.extend和jquery.fn.extend的区别

    jquery.extend jquery.extend(),是拓展jquery这个类,即可以看作是jquery这个类本身的静态方法,例如: <!DOCTYPE html> <html ...

  10. Application.messagebox对话框样式

    if Application.MessageBox('删除不能恢复,确认删除吗?', '删除提示', MB_OKCANCEL + MB_ICONQUESTION)=mrOk thenbegin Sho ...