jasper使用table组件设计复杂的表头

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并访问

原文地址:https://www.cnblogs.com/xing-nb/p/12192426.html

时间: 2024-11-24 14:31:06

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

iview Table组件使用过滤器时无法加载表头解决办法

title: iview Table组件使用过滤器时无法加载表头解决办法 date: 2018-10-01 15:08:50 tags: JavaScript 前端 vue iview 所遇到的问题 使用iview搭建社团用人员管理时,Table组件的columns中filters属性设置为Vue data 中的另一个对象 如下: data() { groupFilter: [], memberCol: [ { title: "组别", render: (h, params) =>

ireport5.6使用table组件,如何用table显示javaBean数据源

1.从组件面板添加一个table组件到报表中. 2.设计table的字段头. 合并操作 1. 2. 删除你不需要的列 新增你的合并列 3.在报表Parameters里新增一个参数dets(java.util.List) 4.配置table数据集 a.重命令数据集(方便) 右键->属性,即可修改. b.添加一个Parameters 新增一个table1(net.sf.jasperreports.engine.JRDataSource) c.手动配置代码,把dets参数传递给table1接收 <d

React中使用Ant Table组件

一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启动,参考 三.简单配置 1.工程下载下来之后,在src目录下新建目录“table”,新建app.js,内容如下. import React from 'react'; import ReactDOM from 'react-dom'; import ExampleTable from './Exam

关于MUI v0.18.0版本 Table组件里的复选框不能选的解决方案

前段时间在用MUI的时候,Table组件出现复选框不能选的bug(描述: 点击复选框,点击事件会触发,复选框勾选状态无变化). 解决方法: 用CheckBox组件代替Table组件自带的复选框. 解决思路: 1.将CheckBox分为两种,一种是表头里的全选框(以下称全选框),一种是列表行里普通的复选框(以下称普通框): 2.将普通框进行单独封装(原因: 1.便于单个普通框自己管理自己的勾选状态,2.当全选框的勾选状态发生变化时,可以通过props将全选框的状态赋给它,从而实现全选的功能): 关

Ant Table组件

http://www.cnblogs.com/hujunzheng/p/5689650.html React中使用Ant Table组件 v一.Ant Design of React http://ant.design/docs/react/introduce v二.建立webpack工程 webpack+react demo下载 项目的启动,参考 v三.简单配置 1.工程下载下来之后,在src目录下新建目录“table”,新建app.js,内容如下. import React from 're

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

elment-ui table组件 -- 远程筛选排序 基于 elment-ui table组件 开发,主要请求后台实现筛选 排序的功能. 需求 排序 筛选 是对后台整个数据进行操作,而不是对当前页面的数据进行操作 若是其关联的下一级页面,(eg:点击查看编辑时,再返回当前页面时,保留之前筛选,或排序条件),否则清空 先上一份源码, 直接使用官网的(修改了一小部分参数,可以忽略) <el-table :data="tableData" style="width: 100

【转载】COM 组件设计与应用(四)——简单调用组件

原文:http://vckbase.com/index.php/wv/1211.html 一.前言 同志们.朋友们.各位领导,大家好. VCKBASE 不得了, 网友众多文章好. 组件设计怎么学? 知识库里闷头找! 摘自---杨老师打油集录 在 VCKBASE 的顶力支持下,在各位网友回帖的鼓励下,我才能顺利完成系列论文的前三回.书到本回,我们终于开始写代码啦.写点啥那?恩,有了!咱们先从如何调用现成的简单的组件开始吧,同时也顺便介绍一些相关的知识. 二.组件的启动和释放 在第三回中,大家用“小

HT图形组件设计之道(一)

HT for Web简称HT提供了涵盖通用组件.2D拓扑图形组件以及3D引擎的一站式解决方式.正如Hightopo官网所表达的我们希望提供:Everything you need to create cutting-edge 2D and 3D visualization. 这个愿景从功能上是个相当长的战线,从设计架构上也是极具挑战性的,事实上HT团队是很保守的,我们从不贪多图大,仅仅做我们感觉自己能得更好,能给用户综合体验更佳的功能,在这样理念驱动下我们慢慢形成了这种愿景,慢慢实现了几个有意义

【转载】COM 组件设计与应用(十七)——持续性

原文:http://vckbase.com/index.php/wv/1264.html 一.前言 我们写程序,经常需要实现这样的需求: 例一.程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置,以便下次运行时保持位置不变: 例二.由于程序运行时间很长,今天执行一部分,明天继续执行.那么在下次运行前要恢复前次的状态: ... ... ... ... 智慧的老师:以上这些需求,如何实现呢? 懵懂的学生:这个简单,只要在程序退出前提取必要的信息保存到文件中,下次运行时再从文件中读出来,设置一下就