zoukankan      html  css  js  c++  java
  • ireport5.6.0分组显示

    一,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详细说明,参考下一篇文章

  • 相关阅读:
    Android之上下文context
    如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感
    【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库
    【Graphql实践】使用 Apollo(iOS) 访问 Github 的 Graphql API
    【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录
    简陋的swift carthage copy-frameworks 辅助脚本
    【自问自答】关于 Swift 的几个疑问
    【读书笔记】The Swift Programming Language (Swift 4.0.3)
    【读书笔记】A Swift Tour
    【趣味连载】攻城狮上传视频与普通人上传视频:(一)生成结构化数据
  • 原文地址:https://www.cnblogs.com/yanan7890/p/12038392.html
Copyright © 2011-2022 走看看