一,ireport中分组

二,java调用实现分组

一,ireport中分组:

1,新建模板文件,纸张随意,名称随意,路径随意

2,连接要分组的数据源

3,添加测试表和数据

CREATE TABLE yananTest (
departId INT,
departName VARCHAR (20),
stuName VARCHAR (20)
)GO INSERT INTO yananTest VALUES(1,'开发部','张亚南'),(1,'开发部','随意'),(2,'实施部','实施1'),(2,'实施部','实施2'),(2,'实施部','实施3'),(3,'销售部','销售1')
GO

4编写sql查询数据

勾选自动提取字段或点击读取字段,能出来蓝色行表示查询无误。点击ok,确定后在左侧Fields字段自动出现蓝色行的字段

5,右击报表点击add report group

groupname随意,选择departId,departId是要分组的依据

下一步中的 group header footer根据自己实际情况,此处为了展示都要

确定后detail1前后会加上分组header和footer

6拖动departName到header栏,stuName到detail1栏,footer随便加一条横线

如果组件面板不显示的话在窗口中点击组件面板即可

拖动后为了美观好看可以调整header、footer、detail1栏的边界线调整下高度

大功告成,点击预览

二,java调用实现分组

我的第一思路是,删除sql语句在Fields中添加字段,java中传参,行不通,因为调用的时候,Fields是接收不到java的传参的。我的第二思路是在Parameters中建立这几个字段,然后传参,仍然行不通,因为分组只能是字段(有待进一步研究),传参是集合。我的第三想法是添加dataset,进行分组,呜呜,初接触我还不会,等以后确定了再补上。最后千辛万苦终于找到方法

sql语句不变,java传数据库连接

方法如下:

将上述report1.jrxml编译后将生成的report1.jasper文件copy到项目指定目录下,我的是目录是i根目录下的report

实现如下代码

    @RequestMapping("/test")
@ResponseBody
public void test(HttpServletRequest req,HttpServletResponse res) throws Exception{
Map<String, Object> map = new HashMap<String, Object>();
String realPath = ClassUtils.getDefaultClassLoader().getResource("").getPath();//项目根目录。该处是springboot方式
ServletContext context = req.getSession().getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
DataSource dbSource = (DataSource) wac.getBean("dataSource"); // 配置文件里的beanid
Connection conn = dbSource.getConnection();
byte[] bytes = JasperRunManager.runReportToPdf(realPath + "ireport/report1.jasper", map, conn);
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream out = res.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();
out.close();
}

启动项目访问即可出现步骤一6中的pdf页面部分。如果中文不显示,参考之前的文章@ireport初接触

至于java中使用ireport详细说明,参考下一篇文章

ireport5.6.0分组显示的更多相关文章

  1. Linq DataTable Group By 分组显示人员明细

    实现功能:       多个字段分组源码样例: 原始数据: 分组后的输出结果: 源代码: public static void PrintPersons() { //准备数据 DataTable dt ...

  2. iReport5.6.0 linechart 制作方法

    iReport 官网和文档上关于chart设计以饼图和JDBC源作为样例.但很多其它的情况下因为报表中的数据须要首先加工处理,因此很多其它的是从JavaBeans set datasource从获取数 ...

  3. 重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示

    原文:重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示 [源码下载] 重新想象 Windows 8 Store Ap ...

  4. wpf CollectionViewSource与ListBox的折叠、分组显示,及输入关键字 Filter的筛选

    在wpf中虽然ObservableCollection<T>作为ListBox的Itemsource,很好,很强大!但是CollectionViewSource与ListBox才是天作之合 ...

  5. MySQL数据中分级分组显示数据

    前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQ ...

  6. 小程序开发笔记(八)—Js数组按日期分组显示数据

    数据分组展示有两种方式,一种是后端直接传入分组格式的Json数据,另一种是我们在前端自己转换格式,这里我们在前端处理转换按日期分组的数据格式 1.例如后端返回数据格式为: [{createtime:' ...

  7. vc6.0如何显示行号以及出现版本不兼容问题

    有时编译时,提示某某行有错,但是要定位到某一行的话,如果在编辑页面能够将行号显示出来,查找也就更方便了,下面我来介绍一下让VC6.0显示行号的方法.   工具/原料   VC6.0.显示行号的插件 方 ...

  8. Group GridView:用于.Net的分组显示的GridView

    我的项目需要一个可以分组显示的GridView,我不会写,上网找了一圈,最终在国外的网站上找到的这个,比较符合我的要求,但它的分页得重写,它写了能分页,但我发现它的分页功能事实上并没有实现,也不知道是 ...

  9. excel 单元格0 不显示的最佳方法

    excel单元格设自定义格式, 条件:可以单元格内容判断后再设置格式.条件格式化只限于使用三个条件,其中两个条件是明确的,另个是“所有的其他”.条件要放到方括号中.必须进行简单的比较.例如这个条件:单 ...

随机推荐

  1. Win 8\10系统安装软件报错

    一.问题 Win 8\10系统由于权限管理严格,右键管理员运行安装软件也会出现各种错误: 进度条走到20%闪退,报程序停止运行等等等等 二.解决思路 先确定软件路径安装在D盘(非系统盘). 开启超级管 ...

  2. Linux必知必会--awk

    弱者,是没有资格要求公平的. --<秦时明月>卫庄 参考文献: http://www.ruanyifeng.com/blog/2018/11/awk.html 阮一峰 https://ww ...

  3. pace.js[转载]

    pace.js监控了什么: pace.js对于加载进度监控了什么呢?通过阅读源码,我们看到整体的进度有四个部分组成:document,elements,eventLag和ajax这四种监视器(Moni ...

  4. 如何开发一个异常检测系统:异常检测 vs 监督学习

    异常检测算法先是将一些正常的样本做为无标签样本来学习模型p(x),即评估参数,然后用学习到的模型在交叉验证集上通过F1值来选择表现最好的ε的值,然后在测试集上进行算法的评估.这儿用到了带有标签的数据, ...

  5. UFUN 函数 UF_DISP (UF_DISP_create_image ) (如何把显示部件部分截图放到指定的文件夹中)

    //此函数功能是输入工作部件的tag,返回工作部件的路径 static string path_name(tag_t path_tag) { ]=""; //得到工作部件的路径 U ...

  6. React 引入import React 原理

    本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以我们如果使用了JSX,我们其实就是在使用React,所以我们就 ...

  7. 使用mustache 做为docker容器运行动态配置工具

    很多时候我们需要在启动容器的时候基于配置文件运行,如果在配置比较简单的时候我们可以通过环境变量 注入,同时当前12 factors 越来越融入大家的开发中了(对于配置通过环境变量处理),但是好多老的软 ...

  8. 链表 | 判断链表B是否为链表A的连续子序列

    王道P38T16 代码: bool common_subSequence(LinkList &A,LinkList &B){ LNode *pA,*pB=B->next,*p=A ...

  9. pwd函数实现

    /* * 文件名:mypwd.c * 描述: 实现简单的pwd命令 */ #include<stdio.h> #include<stdlib.h> #include<di ...

  10. pandas批量读取带有日期的文件夹简单操作

    工作中碰到了这样一个数据处理的问题,想让你把某个文件夹下的子文件夹中的excel表级联成为1张表,用excel来做会很浪费时间并且很劳累,这时候我们就可以用pandas来加大工作效率,只需要半个小时就 ...