Jasperreports+jaspersoft studio学习教程(九) 您所在的位置:网站首页 190kb多少页 Jasperreports+jaspersoft studio学习教程(九)

Jasperreports+jaspersoft studio学习教程(九)

2024-04-11 10:13| 来源: 网络整理| 查看: 265

9.1 设计报表模板

9.1.1 使用Table组件新建模板(步骤参考教程七)如下:

9.1.2 模板自带变量

$V{PAGE_NUMBER} :代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置)

$V{PAGE_COUNT} :当前页面中记录的数目

$V{groupname_COUNT} :   代表当前组的记录数

$V{COLUMN_NUMBER} :列号码

$V{COLUMN_COUNT} :当前列中记录的数目(是当前页里行的序号,在新页上会重置为1)

$V{REPORT_COUNT} :当前文档中数据源记录数目。

 

这里主要使用 $V{PAGE_NUMBER} 来做报表分页

 

 

对于$V{PAGE_NUMBER}:当evaluationTime="Now"时,即是计算当页所在哪一页。 (now:即时执行此表达式)

当evaluationTime="Report"时,计算最后一页,即总页数。(Report:整个报表执行完后才执行此表达式)

9.1.3 拖动6个Text Field组件到Page Footer Band中

设置 第几页 ,注意 其 Evaluation Time 选中 Now。

设置 共几页 ,注意 其 Evaluation Time 选中 Report。

9.1.4 设置 首页、上一页、下一页、末页 需要使用超链接

 

新建一个模板,把 首页 拷贝过去(这里使用DemoReport1.jrxml)

点击首页显示Properties ,搜索HyperLink PageException

设置 链接 为 “https://www.baidu.com/”

保存后,以 HTML 方式 Preview 后,点击首页跳转到百度。

9.1.5 设置 首页、上一页、下一页、末页

 

在 Hyperlink PageExpression 框中输入时需要注意,我们需要设定变量才能正确的导向是哪一页

以下是各选择在HyperlinkPage Expression框中输入的信息

 

首页   : "/JasperWeb/JasperServlet9?page=0"

上一页 :  "/JasperWeb/JasperServlet9?page="+($V{PAGE_NUMBER}-Long.valueOf("1"))

下一页 :  "/JasperWeb/JasperServlet9?page="+($V{PAGE_NUMBER}+Long.valueOf("1"))

末页   : "/JasperWeb/JasperServlet9?page=lastPage"

 

保存模板文件后拷贝到JasperWeb项目中

9.2 编写java代码,实现分页逻辑及大量数据内存处理 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map parameters = new HashMap(16); String pageStr = request.getParameter("page"); HttpSession session = request.getSession(); int pageIndex = 0; int lastPageIndex = 0; //list数据源 List list = new ArrayList(); for(int i = 1 ; i 0) { pageIndex = pageIndex -1 ; } } catch (Exception e) { // 如果得到的非数字字符串 if("lastPage".equals(pageStr)) { pageIndex = lastPageIndex; } } if (pageIndex < 0) { pageIndex = 0; } if (pageIndex > lastPageIndex) { pageIndex = lastPageIndex; } //将html输出到浏览器上 JRHtmlExporter exporter = new JRHtmlExporter(); response.setCharacterEncoding("UTF-8"); out = response.getWriter(); //分页 exporter.setParameter(JRExporterParameter.PAGE_INDEX, pageIndex); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); exporter.exportReport(); } catch (Exception e) { e.printStackTrace(); }finally { out.flush(); out.close(); } } private JasperPrint getJasperPrint(String jasperPath, Map parameters, List list) throws JRException { //解决大数据量保留在内存中,只在内存中保留两页,剩下的放入磁盘中 JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "D:/data"); parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); virtualizer.setReadOnly(true); return JasperFillManager.fillReport(jasperPath, parameters, new JRBeanCollectionDataSource(list)); }

访问servlet,如下:

将第三页存储在磁盘中。

教程就先写到这,以后有知识点再加添补。本教程Demo源码提供,JasperWeb源码

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有