1.1 设计报表模板

1.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter。将组件Table拖入到Detail1 中,跳出Dataset窗口。选择 Create .. ,然后Next

1.1.2 给Dataset命名。选择 Createnew dateset ... ,然后Next

1.1.3 只保留Column Header,然后 Finish

1.1.4 点击Detail中的Table组件进入到Table界面中。

1.1.5 在Column Header中右键Column1 选择Create Column After,生成4个Column

1.1.6 一般表头都是 合并列的复杂表头。选择Column1 右键 -》 Group Columns

在Columns[1]中的Column1右键Create Column after ,显示如下:

将其他三个也如此操作

1.1.7 将组件Text Field 拖入表格中,并设置表头名

1.1.8 在dateset1中新建Field属性,并拖入到Table的Detail中,设置字体样式(这里自定义命名Filed,且注意类型)

1.1.9 返回到Main Report ,新建Fields 命名为table Data,设置Class为JRBeanCollectionDataSource,注意写全路径,新建一个Field为Date,Class为String

1.1.10 点击Main Report 的Detail中的Table,显示Properties后,点击DataSet,选中Use a JRDatasource expression,将新建tableData写入。

保存模板,并复制到JasperWeb项目中。

1.2 编写Servlet注入数据源

1.2.1 新建Fields类和ModelTableSource类如下:

 
  1. package com.jasper.bean;

  2. public class Fields {

  3. private String field1;

  4. private String field2;

  5. private String field3;

  6. private String field4;

  7. private String field5;

  8. private String field6;

  9. private String field7;

  10. private String field8;

  11. //get 和 set方法省略

  12. }

 
  1. package com.jasper.bean;

  2. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

  3. public class ModelTableSource {

  4. /**

  5. * 注入table组件的数据源

  6. */

  7. private JRBeanCollectionDataSource tableData;

  8. /**

  9. * 当前时间(查询时间)

  10. */

  11. private String date;

  12. // get和set方法省略

  13. }

1.2.2 新建JasperServlet5 ,doGet内容如下:

 
  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  2. Map<String,Object> parameters = new HashMap<String,Object>(16);

  3. String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport5.jrxml";

  4. //由jrxml文件编译后生产jasper文件的路径

  5. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport5.jasper";

  6. FileInputStream isRef = null;

  7. ServletOutputStream sosRef = null;

  8. try {

  9. //编译jrxml生产jasper文件

  10. JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);

  11. isRef = new FileInputStream(new File(jasperPath));

  12. sosRef = response.getOutputStream();

  13. //组装list数据源

  14. List<Fields> list = new ArrayList<Fields>();

  15. for(int i = 1 ; i <= 20; i++) {

  16. Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));

  17. list.add(fields);

  18. }

  19. ModelTableSource mts = new ModelTableSource();

  20. mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

  21. mts.setTableData(new JRBeanCollectionDataSource(list));

  22. List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();

  23. mlist.add(mts);

  24. //new JRBeanCollectionDataSource(list) 以javaBean为数据源注入报表数据

  25. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));

  26. response.setContentType("application/pdf");

  27. } catch (JRException e) {

  28. e.printStackTrace();

  29. }finally {

  30. sosRef.flush();

  31. sosRef.close();

  32. }

  33. }

1.2.3 启动tomcat并访问

jasper使用table组件设计复杂的表头的更多相关文章

  1. 解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐

    一.固定表头后表体列和表头不对齐 此问题可能在antd3.24.0版本之前都存在,反正3.16.2版本是存在这个问题的,如果是3.24.0之前的版本估计只能通过修改css样式解决. 按照官网说的: 1 ...

  2. Table 组件构建过程中遇到的问题与解决思路

    在 GearCase 开源项目构建 Table 组件的过程中.遇到了各式各样的问题,最后尝试了各种方法去解决这些问题. 遇到的部分问题 checkbox 的全选和半选问题 table 组件的排序请求方 ...

  3. React中使用Ant Table组件

    一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...

  4. 【Ireport】利用Ireport5.2的table组件迅速制作表格导出pdf

    转载请注明网址.Ireport table dataset Ireport在半年前还是4.7,今天无意发现,居然出到了5.2就搞一把. 首先,去下载Ireport,并进行安装.这个我就不演示了.下载完 ...

  5. Ant Table组件

    http://www.cnblogs.com/hujunzheng/p/5689650.html React中使用Ant Table组件   v一.Ant Design of React http:/ ...

  6. React组件设计

    React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有D ...

  7. 在 Element-UI 的 Table 组件上添加列拖拽效果

    Element-UI 的 Table组件很强大,但是我们的需求更强大... 简单粗暴的来一发效果图: 一.数据驱动 传统的拖动效果,都是基于通过 mousedown.mousemove.mouseup ...

  8. React组件设计(转)

    React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有D ...

  9. elment-ui table组件 -- 远程筛选排序

    elment-ui table组件 -- 远程筛选排序 基于 elment-ui table组件 开发,主要请求后台实现筛选 排序的功能. 需求 排序 筛选 是对后台整个数据进行操作,而不是对当前页面 ...

随机推荐

  1. [LeetCode]501. Find Mode in Binary Search Tree二叉搜索树寻找众数

    这次是二叉搜索树的遍历 感觉只要和二叉搜索树的题目,都要用到一个重要性质: 中序遍历二叉搜索树的结果是一个递增序列: 而且要注意,在递归遍历树的时候,有些参数如果是要随递归不断更新(也就是如果递归返回 ...

  2. 使用Arduino点亮ESP-01S,ESP8266-01S上的板载LED

    因为在开发ESP-01s远程控制中觉得接线麻烦,又因为ESP-01s板子上带有LED灯,那就先点亮板载LED,  如图所示: 打开Arduino 把代码copy进去,再编译烧录,就可以看见LED灯每隔 ...

  3. 简单session实现

    简单的session校验实现 利用拦截器实现 package com.ryh.blog.intecepter; import org.springframework.core.Ordered; imp ...

  4. 坐标转换成SVG的path路径

    大家好,我是一个刚入职的前端小白,入职后一直做关于svg 的东西,我将自以为很方便的方法提供给大家. function svgPathCurv(a,b,curv) { /* * 弯曲函数. * a:a ...

  5. 我的开源项目在五个月内超过了 600 star

    其实我在 2016 年年底就开始写了这个项目:Forest,一个能够将 HTTP 的所有请求信息(包括 URL .Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能 ...

  6. win7-win10 禁用IPV6临时地址

    IPV6临时地址本意是保护设备隐私,但有时候需要暂时禁用的情景下指令 netsh interface ipv6 set privacy state=disable 启用则修改最后的状态值为enable ...

  7. Liunx运维(十一)-系统管理命令

    文档目录: 一.lsof:查看进程打开的文件 二.uptime:显示系统的运行时间及负载 三.free:查看系统内存信息 四.iftop:动态显示网络接口流量信息 五.vmstat:虚拟内存统计 六. ...

  8. 项目中处理数据常用Excel公式

    ="'"&A1&"'," 需求:是大佬给了excel,里面是700多个单号,要我从生产的数据库中查询出每个单号对应的类型,这时需要查数据库,我决 ...

  9. loj #6179. Pyh 的求和 莫比乌斯反演

    题目描述 传送门 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^m \varphi(ij)(mod\ 998244353)\) \(T\) 组询问 \(1 \leq ...

  10. 剑指offer 面试题10.1:青蛙跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 编程思想 对于本题,前提只有 一次 1阶或者2阶的跳法.a.如果两种跳 ...