JasperReports入门教程(一):快速入门

摘要:
JasperReports入门教程(I):快速入门背景现在公司的项目需要实现一个可配置的报告,以快速适应客户需求的变化。后来,我发现您可以使用JasperReports+JaspersoftStudio来实现可配置的报告。现在,让我们跟随我来实现JasperReports的第一个报告应用程序。JasperReports基本介绍JasperReport是一个非常强大且易于使用的开源报告引擎,它是用Java编写的。

JasperReports入门教程(一):快速入门


背景

现在公司的项目需要实现一个可以配置的报表,以便快速的适应客户的需求变化。后来在网上查资料发现可以使用JasperReports + Jaspersoft Studio工具来实现可配置的报表。在使用过程中也积累了一些经验,就想分享出来给大家,作为一个入门的指引,让大家可以更快速的上手。下面大家跟着我一起来实现第一个JasperReports的报表应用。

JasperReports基本介绍

JasperReports是一个非常强大,易用的开源报表引擎,它是用Java编写的。它可以通过各种各样的数据源来生成像素级的文档,这些文档都可以查看,打印以及导出(文档格式包括HTML、PDF、Excel、Word等等)。下面我们先尝试通过一个简单的demo进行上手。

Jaspersoft Studio

Jaspersoft Studio是一个设计报表模板的工具,我们通过它来设计需要使用报表的模板。

1.下载Jaspersoft Studio工具,选择下载Jaspersoft Studio CE 下载地址

JasperReports入门教程(一):快速入门第1张

2.安装Jaspersoft Studio,安装过程略过,默认安装即可

3.开始我们的第一个报表模板

3.1.打开Jaspersoft Studio工具,点击File->New->Project先创建一个项目

JasperReports入门教程(一):快速入门第2张

然后填写项目名字为demo,创建一个名叫demo的项目

JasperReports入门教程(一):快速入门第3张

3.2.点击File->New->Jasper Report(也可以直接在demo项目上右键New->Jasper Report),选择一个竖向A4纸大小的模板

JasperReports入门教程(一):快速入门第4张

Data Adapter可以选择 One Empty Record 选项,即空数据源,完成后就创建好了第一个模板

JasperReports入门教程(一):快速入门第5张

4.模板设计界面的区域说明如下。中间的模板设计区域分别多个band,这些band都可以右键删除

  • Title:标题区,如果数据有多页只会在第一页打印
  • Page Header:页头区,多页的情况下每页都会打印
  • Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印
  • Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印
  • Column Footer:列表底部区,多页的情况下每页都会打印
  • Page Footer:页底部区,多页的情况下每页都会打印
  • Summary:合计区,只会在最后一页打印

JasperReports入门教程(一):快速入门第6张

5.添加报表元素

5.1.先从右侧Basic Elements区域拖拽一个Static Text元素到Title区,可以任意调整元素的大小和位置,双击可以修改元素要显示的内容,
选中元素后,可以在右侧设置元素的边框,字体和大小,文本的对齐方式等等。

JasperReports入门教程(一):快速入门第7张

5.2.在左侧Outline区域Paramters上右键Create Paramter创建一个新的属性,命名为name,类型java.lang.String

JasperReports入门教程(一):快速入门第8张

5.3.拖拽name属性到Page Header区域,同样可以在右侧设置它的属性

JasperReports入门教程(一):快速入门第9张

5.4.在左侧Outline区域Fields上右键 Create Field创建两个字段Field1,Field2,类型java.lang.String

JasperReports入门教程(一):快速入门第10张

5.5.然后拖拽Field1,Field2字段到Detail1区域,会自动带出两个值为Field1,Field2的Static Text元素在Column Header区域,调整位置对齐

JasperReports入门教程(一):快速入门第11张

5.6.预览可以看看样式,因为此时我们未给Field1,Field2的数据集赋值,所以预览的为null

JasperReports入门教程(一):快速入门第12张

6.编译报表模板

6.1.在左侧的Project Explorer框文件Blank_A4.jrxml上右键Compile Report可以生成编译好的文件Blank_A4.jasper

JasperReports入门教程(一):快速入门第13张

7.在java中调用模板并输出到pdf/html

上面我们在设计器中设计好了报表的模板,下面我们需要在java中通过代码把数据填充到模板中,并展示出来。

7.1.首先需要在maven中引用jasperreports的jar包依赖

<dependency>
     <groupId>net.sf.jasperreports</groupId>
     <artifactId>jasperreports</artifactId>
    <version>6.9.0</version>
</dependency>

7.2.然后把6.1步骤中编译好的文件Blank_A4.jasper放入资源文件中

7.3.然后调用代码把数据填充到模板中,为了方便后续使用,我把JasperReport常用的方法封装到了JasperReportUtil类中

    @GetMapping("/jasper")
    public void getReport(@RequestParam("type") String reportType, HttpServletResponse response)
            throws Exception {
        HashMap<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("name", "xiao ming");

        List<HashMap> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            HashMap<String, String> item = new HashMap<String, String>();
            item.put("Field1",  "Field1-" + i);
            item.put("Field2",  "Field2-" + i);
            list.add(item);
        }
        String jasperPath = JasperReportUtil.getJasperFileDir("chapter1");
        if (reportType.equals("pdf")) {
            JasperReportUtil.exportToPdf(jasperPath, parameters, list, response);
        } else if (reportType.equals("html")) {
            JasperReportUtil.exportToHtml(jasperPath, parameters, list, response);
        }
    }

7.4.把项目运行起来,在浏览器中访问 http://localhost:8080/test/jasper?type=html 或者 http://localhost:8080/test/jasper?type=pdf 就可以在浏览器中看到html或者pdf格式的报表了
JasperReports入门教程(一):快速入门第14张

JasperReports入门教程(一):快速入门第15张

本节代码和报表模板

免责声明:文章转载自《JasperReports入门教程(一):快速入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇greenplum(postgresql) 数据字典使用notepad++批量在每行首尾添加内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

自定义yarn运行vue项目命令

在项目package.json文件的scripts块中,您可以看到新项目“scripts”的yarn命令集:{“serve”:“vue-cli serviceserve”,“build”:“vue-cli servicebuild”,“lint”:“wue-cli serviceint”}。12345serve是vue项目的启动命令。您可以通过修改服务自定义...

CAD转DXF怎么转换?教你三种转换方法

2.进入到CAD版本转换的界面中后,在选择“点击选择文件”,在跳转出的“打开”界面中打开需要转换的CAD图纸。...

将txt、csv等文本文件导入Hive

将txt、csv等文本文件导入Hive目录将txt、csv等文本文件导入Hive00.数据在虚拟机外01.启动hadoop、hdfs02.将文件放置在hdfs目录下03.登录hive并进入指定数据库04.根据文件创建表05.执行导入语句00.数据在虚拟机外如果数据在虚拟机内,请跳过此步,直接执行接下来的操作。...

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

您可以看到ELDict类中有一个引用:importjavax。xml。绑定注释XmlAttribute;虽然未使用,但它会导致mvn编译错误。在在线绑定中搜索“包javax.xml.bind.nannotation不存在”。结果是:包javax。xml。bind Annotation不存在-CSDN论坛2009年12月2日·无法编译使用jaxb的类,因为软件...

VTK 空间几何变换(Transform),平移、旋转和缩放

空间变换的基础知识变换矩阵我们都知道,在屏幕上显示的是二维的图形,三维图形都是投影到二维平面的,但它们定义在三维空间的。VTK有关空间变换的类和方法VTK相关的类有:vtkTransform,vtkTransformFilter,vtkMatrix4x4等相关的方法有:RotateX、RotateY、RotateZRotateWXYZScaleTransla...

电脑不识别USB blaster驱动问题

电脑不识别USB blaster,如下图: 解决办法:手动更新...