Jasperreport+studio设计报表教程(六)--模板元素详解/分组

转自: https://blog.csdn.net/pigdreams/article/details/59676769

上节已经介绍了如何用实体类集合来填充报表,下载demo传送门
本节主要讲解模板设计中如何放置模板元素达到我们想要的效果,涉及到模板元素的使用,如detail,column header等,下面将一一讲解outline中各个自带元素的使用,其实第二节中有粗略讲到它们的含义。
这里写图片描述

Title &Detail

title的作用我们用上一节的学生成绩模板可以明显地看到。
这里写图片描述
打开预览,生成了三页,是不是很奇怪上一节才生成了两页,为何这一次生成了三页,因为我将所有元素都加回来了,上一节的模板只保留了title和detail.
这里写图片描述
明显看到page header和column header都占了一定的位置,从中也可以看到Title的作用。
Title在第一页中显示,而第二页和第三页都不会再显示,所以Title只会显示一次。

Detail则是要放置填充数据的位置,因为它会加载多次,有多少条数据就会加载多少次,保证了数据可以全部显示出来。
这里写图片描述

顾名思义,页的头部,应该就是我们所说的页眉,我们的word文档一般都会有页眉,写点励志的话,现在就来试验一下吧。
这里写图片描述
来看看预览的效果如何。
这里写图片描述
这里写图片描述
这里写图片描述
每一页都出现了这句话,即Page Header会在每一页都加载一次,与Detail作用一致。

首先看名字,表头与表尾,作用与Page Header应该相差无几,都是提示文字,表头可以放表格里列的名字,表尾可以放一些数据的总结概括等等。
在Column Header 和 Column Footer各自放置两段Static Text,然后进行预览。
这里写图片描述
预览如下图。
这里写图片描述
这里写图片描述
可以看到,Column Header与 Column Footer确实在每一页都有出现,Column Header出现在与模板相同的位置上,但是Column Footer却出现在了页底的位置,与模板设计界面相差甚远,这是为何?
我的猜测是,模板上我们看的并不是真正的页面大小的预览,只是显示了从上到下排放元素的实际长度,如何没有放置元素软件就会把界面缩小到只有内容的长度。
如我们的模板是A4,21cm*29cm,实际上只显示了的长度才为26cm左右。实际上我们是可以拖动这些元素的大小的,拖得越短,显示的越少。
这里写图片描述
仔细观察我们的预览图,Colomn Footer实际显示的位置应该是在Page Footer的上方,而Detail元素则会填充剩余的位置,因为我们的表格是固定大小的,所以多余的大小都显示为空白了。

有了页眉,自然有对应的页脚。一般页脚的作用都是用于显示页数的。现在我们就来放置一个页数来看看效果,Jaspersoft studio就自带这个显示页数的组件,使用非常方便。
这里写图片描述
其实这个组件就是引用了studio自带的一个变量PAGE_NUMBER,现在来看看预览效果。

第一页

这里写图片描述

第二页

这里写图片描述

第三页

这里写图片描述
奇怪的是第三页没有正常显示,这是为何?是不是不够位置了,我们把Page Footer拉长一些试试。
这里写图片描述
结果还是没有显示,只有Column Footer显示。看来最后一页是特殊的,用Page Footer是没法显示最后一页的。幸好还有一个元素,Last Page Footer,看来这个元素就是用以最后一页页脚的。

上面已经说明这个元素的作用,现在就来试试它是不是真的用于最后一页的。
添加一个页数显示,与Page Footer一样。
这里写图片描述
打开预览

第二页

这里写图片描述

第三页

这里写图片描述
第三页显示了正常的页数,所以我们的猜测是正确的,Last Page Footer只用于最后一页,只有最后一页才显示Last Page Footer,而Page Footer在最后一页是不显示的,故Last Page Footer在有页数显示时是一定要添加的。
由此也可以看出其实Page Footer 与Last Page Footer虽然都添加在模板中,实际上始终只显示一个。

Summary

中文意思是摘要,一般而言书籍的摘要都是放在第一页的,翻书的第一眼看到不是摘要就是序言。那么模板里的Summary的摘要是显示在哪里的?有何作用呢?只好实践一番了。
在Summary里添加一段话,时间与总页数,看看效果如何。
这里写图片描述
查看预览
第一页与第二页都没看到有何文字显示,直到打开第三页才发现了摘要的位置原来是在这里,感觉像发现新世界了一样惊奇。
这里写图片描述
是不是很惊讶,没想到Summary竟然出现了最后一页的空白位置,而且是紧跟在Detail元素的下方,在Column Footer与Last Page Footer的上方。看来Summary是数据显示完之后用以总结的,并且会出现在Detail表格下方,在页面填充的空白无数据的位置出现。
但是如果我把Detail调到最大,不让出现空白的位置,这里Summary会不会正常显示呢。
我把Detail拉到最大,只能向下拉,向上拉只会拉短Detail上方的Column Header的长度,但是当拉到27cm时会无法再向下拉了,应该是有长度限制的Detail。
这里写图片描述
预览,发现生成了五个页面

第一页

这里写图片描述

第四页

这里写图片描述

第五页

这里写图片描述
第一页并没有显示表格,看来有了title,detail就不够位置显示了,表格就放到了下一页进行显示。
Summary出现在最后一个单独的页面,这时Page Header, Column Header/Footer,Page Footer没有显示,Last Page Footer也没有显示,结论是如果Summary单独出现在一个单独的界面时,只会显示Summary,不会再显示其它元素。

No Data

不放置数据,没什么特殊含义,可以略去。

Background

Background应该是报表的背景,可以放一张图片试试效果如何,Background可以调到跟界面一样大。

拉取一个Image组件到背景元素中,选择第一项以项目中的图片作为资源来源。

这里写图片描述

将图片放在Background 中,可以看到图片的预览,显示的大小与图片本身的像素相关联,当然我们也可以拉大它。
这里写图片描述
现在来看看报表模板生成的预览。
这里写图片描述

背景的图片在每一页都会显示,并且开始位置是与页面的实际大小的开始位置一致的(设置了页边距)。
我们将图片放大一些,看看效果。

生成预览
这里写图片描述

将图片拉得多大,在页面中就显示为多大,最大为整个页面的高度。
至此,Jasperreport的教程就算是完成第一个阶段了,算是入门了。下面是1-6章的案例demo,不包括所依赖的jar包,有报表模板文件jrxml,还有bean的jar包,生成模板文件的java源代码。

——————————————————————————————————

 

 接着上一篇的内容来看报表分组显示数据



6.1 设计报表模板(在DemoReport4.jrxml上修改)


6.1.1 模板右键 -> Create Group ,跳出Group Band的页面,命名并选中分组方式




点击Next ,只勾选 Group Header。




然后Finish。完成后模板中多出 Group2 Group Header1 的Band




6.1.2 将deptId 拖入 Group Header中 ,会跳出 TextField Wizard框,选中 NoCalculation Function 。




双击 $F{deptId} 会弹出Expression editor框





 

设计报表模板如下:





保存后,替换项目中的jrxml文件。



6.2 编写servlet注入数据源(在JasperServlet3上修改)



   
   
  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/DemoReport4.jrxml”;
  4. //由jrxml文件编译后生产jasper文件的路径
  5. String jasperPath = request.getServletContext().getRealPath(“/”)+”/jasper/DemoReport4.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 <User> list = new ArrayList <User>();
  15. User user1 = new User(1,”小明”,20,1);
  16. User user2 = new User(2,”小虎”,20,1);
  17. User user3 = new User(3,”小风”,20,2);
  18. User user4 = new User(4,”小东”,20,2);
  19. User user5 = new User(5,”小南”,20,3);
  20. User user6 = new User(6,”小翔”,20,3);
  21. list.add(user1);
  22. list.add(user2);
  23. list.add(user3);
  24. list.add(user4);
  25. list.add(user5);
  26. list.add(user6);
  27. //new JRBeanCollectionDataSource(list) 以javaBean为数据源注入报表数据
  28. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(list));
  29. response.setContentType(“application/pdf”);
  30. } catch (JRException e) {
  31. e.printStackTrace();
  32. }finally {
  33. sosRef.flush();
  34. sosRef.close();
  35. }
  36. }


启动tomcat,并访问。





            </div>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JasperReport是一个强大的报表生成工具,支持生成多种格式的报表,包括PDF、Excel、Word等。下面是使用JasperReport生成Excel报表的简单步骤: 1. 创建报表模板:使用JasperStudio创建报表模板,选择Excel作为输出格式,并设计报表布局和样式。 2. 定义数据源:定义报表所需的数据源,可以是数据库、XML文件等。 3. 编写Java代码:使用Java代码调用JasperReport API,读取数据源并将数据填充到报表模板中,最终生成Excel报表。 下面是一个简单的示例代码: ```java // 加载报表模板 JasperReport jasperReport = JasperCompileManager.compileReport("report.jrxml"); // 定义数据源 JRDataSource dataSource = new JREmptyDataSource(); // 填充数据并生成Excel报表 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource); JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("report.xlsx")); SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); configuration.setOnePagePerSheet(true); exporter.setConfiguration(configuration); exporter.exportReport(); ``` 在这个示例中,我们首先加载报表模板,然后定义一个空的数据源。接下来,使用JasperFillManager将数据源填充到报表模板中,并生成一个JasperPrint对象。最后,我们使用JRXlsxExporter将JasperPrint对象导出为Excel文件。在导出Excel文件时,我们可以通过SimpleXlsxReportConfiguration设置导出选项,例如每页一个工作表等。 需要注意的是,JasperReport生成Excel报表的效果可能不如专业的Excel工具,例如Microsoft Excel或LibreOffice Calc。如果需要生成复杂的Excel报表,建议使用专业的Excel工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值