【Spring】Jasper入门

目录

概述

Jasper Report的开发周期:

Jasper入门

模板的制作和简单导出

使用Java工程导出Jasper

中文处理


概述

        在企业级应用开发过程中,报表的生成和打印是一个重要的环节,包括在日常生活学习中.PDF报表也有广泛的应用场景.市面上流行的有三种制作PDF的报表工具,

  • iText PDF :用于生成PDF文档的一个java类库,通过IText不仅可以生成PDF文档而且还可以将XML   HTML文件转换为PDF文件,代码编写特别复杂
  • Openoffice:开源软件,并且能够在Windows和linux平台运行,可以灵活的将word或者Excel转换为PDF文档
  • Jasper Report: 是一个强大的 灵活的报表生成工具,能够显示丰富的页面内容,并将之转换成PDF

Jasper Report的开发周期:

  • 设计阶段
    • 创建一些模板,模板中包含了报表的布局与设计,包括执行计算的复杂公式、可选的从数据源获取数据的查询语句以及其他的一些信息.模板设计完成之后,将模板保存为JRXML文件,也就是XML文件
  • 执行阶段
    • 使用以JRXML文件编译为可执行的二进制文件,结合数据进行执行,填充报表数据
  • 输出阶段
    • 数据填充结束之后,执行输出多种形式的报表

Jasper入门

软件链接:链接:

https://pan.baidu.com/s/1RYu3JYpi85w26bEN5ulqMQ 
提取码:1m0t 

模板的制作和简单导出

1.打开Jaspersoft Studio ,新建一个project, 步骤: File -> New -> Project-> JasperReportsProject

2. 新建一个Jasper Report模板,在 Stidio的左下方Project Explorer 找到刚才新建的Project (我这里新建的是DemoReport),步骤:项目右键 -> New -> Jasper Report

 

                                                                                 

3.选择 Blank A4 (A4纸大小的模板),然后 Next 命名为DemoReport1.jrxml.

                                                                                

 

如图所示,报表模板被垂直的分层,每一个部分都是一个Band,每一个Band的特点不同:

                                                                                   

  • Title(标题):只在整个报表的第一页的最上端显示。只在第一页显示,其他页面均不显示。
  • Page Header(页头):在整个报表中每一页都会显示。在第一页中,出现的位置在 Title Band的下面。在除了第一页的其他页面中Page Header 的内容均在页面的最上端显示。
  • Page Footer(页脚):在整个报表中每一页都会显示。显示在页面的最下端。一般用来显示页码。
  • Detail 1(详细):报表内容,每一页都会显示。
  • Column Header(列头):Detail中打印的是一张表的话,这Column Header就是表中列的列头。
  • Column Footer(列脚):Detail中打印的是一张表的话,这Column Footer就是表中列的列脚。
  • Summary(统计):表格的合计段,出现在整个报表的最后一页中,在Detail 1 Band后面。主要是用来做报表的合计显示

4. 开始对制作模板

                             

                                                                                                                

5.右键单机模板文件 -> compile Report 对模板进行编译,生成.jasper文件,

                                                                     

使用Java工程导出Jasper

1. 创建一个Demo工程

2.导入坐标

<dependencies>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.5.0</version>
</dependency>
<dependency>
    <groupId>org.olap4j</groupId>
    <artifactId>olap4j</artifactId>
    <version>1.2.0</version>
</dependency>
<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7</version>
</dependency>
 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.47</version>
</dependency>
</dependencies>

3.将编译好的模板放到工程中

4.使用Java导出模板(我们可以在输出路径查看导出的PDF文件).

package com.james;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class Dem0 {
    public static void main(String[] args) throws Exception {
//        1、导出一个只有静态文本的pdf
//        指定模板的路径
        String filePath = "模板的路径";
//        文件的输入流
        InputStream inputStream = new FileInputStream(filePath);
//        准备模板中需要的参数
        Map parameters = new HashMap();
        JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, new JREmptyDataSource());
//        输出路径
        JasperExportManager.exportReportToPdfStream(jasperPrint, new FileOutputStream("d:\\demo1.pdf"));
    }
}

中文处理

        用于Jasper对于中文的支持比较弱,所以以上代码导出可能会看不见中文文字,这时候需要我们手动进行一些中文的设置.

1. 首先在设计阶段我们就指定中文的样式

                                                                       

2.在项目中添加配置文件

    添加properties文件:

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory

net.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml

   指定中文的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <!--<fontFamily name="Lobster Two">-->
    <!--<normal>lobstertwo/LobsterTwo-Regular.otf</normal>-->
    <!--<bold>lobstertwo/LobsterTwo-Bold.otf</bold>-->
    <!--<italic>lobstertwo/LobsterTwo-Italic.otf</italic>-->
    <!--<boldItalic>lobstertwo/LobsterTwo-BoldItalic.otf</boldItalic>-->
    <!--<pdfEncoding>Identity-H</pdfEncoding>-->
    <!--<pdfEmbedded>true</pdfEmbedded>-->
    <!--<!–-->
    <!--<exportFonts>-->
    <!--<export key="net.sf.jasperreports.html">'Lobster Two', 'Times New Roman', Times, serif</export>-->
    <!--</exportFonts>-->
    <!--–>-->
    <!--</fontFamily>-->
    <!--如果想要使用仿宋,课复制fontFamily,将所有的'华文宋体'改为"仿宋",所有的"stsong"改为"simfang"等-->>
    <fontFamily name="华文宋体">
        <normal>stsong/stsong.TTF</normal>
        <bold>stsong/stsong.TTF</bold>
        <italic>stsong/stsong.TTF</italic>
        <boldItalic>stsong/stsong.TTF</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export>
        </exportFonts>
        <!--
        <locales>
            <locale>en_US</locale>
            <locale>de_DE</locale>
        </locales>
        -->
    </fontFamily>
</fontFamilies>

      引入字体库:stsong.TTF

可以在控制面板的字体库中引入.

                                                                              

代码结构:

下一篇:Jasper数据的填充

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值