码迷,mamicode.com
首页 > 其他好文 > 详细

ireport5.6.0分组显示

时间:2019-12-14 12:17:48      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:参考   text   窗口   代码   提取   hide   run   点击预览   想法   

一,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
View Code

技术图片

 

 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();
    }
View Code

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

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

ireport5.6.0分组显示

标签:参考   text   窗口   代码   提取   hide   run   点击预览   想法   

原文地址:https://www.cnblogs.com/yanan7890/p/12038392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!