报表笔记

我不是女神ヾ 2022-05-18 08:09 343阅读 0赞

常用的几大报表技术:POI 、Itext、jasperreport技术,本篇以jasperreport为例。

Jasperreport:

  1. jasperreport是一个强大的、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 PDFHTML或者xml格式等。

该库完全是由java编写,可以用于各种java应用程序,包括javaee,web应用程序中生成动态内容。

jasperreport是开源的,但是文档是收费的,它还有一个开源的工程IRepoet,Ireport是一个图形化的辅助工具,能弥补jasperreport的缺点,jasperreport仅提供了可使用的类库。

IReport:

  1. iReport的删除格式,支持PDFHTMLCSVjava2dExcel、纯文字、JRViewer,其中最常用的是PDFJRViewer

报表模板的结构:

  1. ![70][]

Title:报表的标题,如有多页只有一个标题

Page Header :每页报表数据的页头

Cloumn Header:数据的列头

Detail:显示数据的内容

Column Footer:表格页脚

PageFooter:页脚

Summarg:摘要

常用的报表组件

  1. ![70 1][]

Static Text : 静态的文本

TextField :显示动态的文本

设置预览的格式 — PDF

70 2

Irerot :配置数据库的连接,基于报表生成

  1. ![70 3][]

1,字段的创建

70 4

点击Next之后,进行链接那个数据库

70 5

数据库为红色表示没有改驱动,需要加入该驱动

70 6

连接完成数据库之后,然后可以直接对数据库进行使用sql语句直接查询

70 7

在使用sql语句查询的时候,可以使用参数来传递条件表达式中的参数

select * from 表名 where = $P{PojectName} order by pronname

1,2方式二

70 8

右键创建

70 9

重命名:

70 10

创建完成之后,将创建的字段 添加到Datail 1中 此时会在Column Header中出现你要设置的对应的字段的名字

70 11

可以对指定的字段进行属性的设置

70 12

1.3使用 javabean的形式创建Field

70 13

选择的目录是当前javabean所在的工程路径下编译后的class文件所在的目录。

2.参数

通常是用来在打印的时候从程序里的传值到报表里,也就是说参数通常的是其参数传递的作用,在使用的时候,一般是用来将数据放在map中设置key和value两个参数,key就是对应的报表中的参数,参数的类型是java中的Object类型,所以可以传递任意的类型。

在使用参数的时候,格式是:$P{parameter name}

在程序中将参数传递到报表中:

1,创建一个Map集合,将要显示的数据封装到map集合中,如果是多个对象类型的,主要对象中的属性值要跟报表中的参数的名称一致,将对象放进map集合中即可

2,创建JaperFillManager.fillReport(fileName,hm,new JREmptyDataSource());方法

  1. fileName 参数表示的是:根据报表模板生成的模板对象
  2. hm 表示的map集合
  3. new JREmptyDataSource() 表示的数据源 -- 如果是对象显示数据的时候,将查询出的数据当参数传递(从数据库中查询的数据)
  4. @RestController
  5. public class Demo01 {
  6. @Autowired
  7. ServletContext context;
  8. @RequestMapping(value = "/hello")
  9. public void report() throws IOException, JRException {
  10. RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
  11. ServletRequestAttributes attributes1 = (ServletRequestAttributes) attributes;
  12. HttpServletRequest request = attributes1.getRequest();
  13. HttpServletResponse response = attributes1.getResponse();
  14. // 获取全局参数
  15. // WebApplicationContext context =
  16. // ContextLoader.getCurrentWebApplicationContext();
  17. // ServletContext servletContext = context.getServletContext();
  18. // 设置下载的类型
  19. response.setContentType("application/pdf");
  20. // 获取当前浏览器的类型
  21. String header = request.getHeader("user-agent");
  22. // 设置头信息,设置下载的中文乱码的问题
  23. String s = FileUtils.encodeDownloadFilename("报表.pdf", header);
  24. // 设置点击下载的时候下载的文件名称
  25. response.setHeader("Content-Disposition","attachmnet;filename"+s);
  26. // 获取IRrport的路径 的全路径
  27. // String realPath = context.getRealPath("ReportDemo/src/main/resources/jasper/report1.jrxml");
  28. String realPath = this.getClass().getClassLoader().getResource("jasper/Ieport.jrxml").toString();
  29. System.out.println(realPath);
  30. // 根据给的IReport的模板,生成IRrport的对象
  31. JasperReport jasperReport = JasperCompileManager.compileReport(realPath);
  32. HashMap<String, Object> map = new HashMap<>();
  33. map.put("name","李四");
  34. map.put("age","20");
  35. map.put("sex","男");
  36. // 将数据和地址绑定在一起 因为为没有设置数据源,所以传入null
  37. JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, new JRBeanCollectionDataSource(null));
  38. JRPdfExporter pdfExporter = new JRPdfExporter();
  39. // 设置对象的输出 格式为PDF 的格式
  40. JRPdfExporter jrPdfExporter = new JRPdfExporter();
  41. // 设置 数据
  42. jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT,null);
  43. // 将结果放进流中,进行输出
  44. jrPdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,response.getOutputStream());
  45. // 执行导出
  46. jrPdfExporter.exportReport();
  47. }
  48. }

常用的三个参数 (拿sql举例):

select id ,count from a where id = idstr;(idstr表示传递的数据)

$F{id}:即显示以上sql查询的id值 用于数据的显示

$P{idstr} :即显示传进来的参数值

$V{sumCunt} 即求和的count 列的值,并显示

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读

    相关 财务报表

    几个问题 企业一共有几类财务报告? 什么是财务会计报告? 什么是税务会计报告? 税务会计报告与财务会计报告的区别是什么? 什么是管理会计报告? 管理会计报告与财

    相关 UAP报表

    1 报表开发的缺点 报表开发量大   格式复杂  开发效率低  SQL维护复杂 定位差  集成差    操作难 2 报表的定义 分析报表和采集报表的总称   报表=异步