【Spring】Jasper数据填充

目录

参数Map填充数据

    1. 新建一个模板

    2.在outline面板中找到Parameters,右键 -> Create Parameter,新建一个Parameter(生成一个Paramerter1)

    3. 设置参数信息:

    4 .将设置好的参数拖至指定的位置(拖拽之后设置参数的字体)

    5.保存新建好的模板,生成Jasper文件,

    6. 编写java代码

数据源填充数据

JDBC数据源

    1. 配置数据连接

    2. 配置数据库信息

    3. 制作模板

使用JavaBean数据源

    1.创建模板(使用Create Field创建字段),将创建的字段拖至指定位置

    2.配置实体类

    3.java代码:


        上一篇文档讲完了Jasper的入门,开始来对Jasper进行数据的填充操作.

参数Map填充数据

    1. 新建一个模板

    2.在outline面板中找到Parameters,右键 -> Create Parameter,新建一个Parameter(生成一个Paramerter1)

    3. 设置参数信息:

 点击新创建的参数,在右侧找到下面设置框,设置参数的名称(小编设置的是username,company,mobile,dept).

    4 .将设置好的参数拖至指定的位置(拖拽之后设置参数的字体)

    5.保存新建好的模板,生成Jasper文件,

    6. 编写java代码

package com.james;
import net.sf.jasperreports.engine.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class Demo {
    public static void main(String[] args) throws Exception {
//Jasper的路径名
        String filePath = "Jasper的路径名";
//        文件的输入流
        InputStream inputStream = new FileInputStream(filePath);
        //2.创建JasperPrint,向jasper文件中填充数据
        FileOutputStream os = new FileOutputStream("d:\\demo2.pdf");
        try {
            Map parameters = new HashMap();
            //设置参数 参数的key = 模板中使用的parameters参数的name
            parameters.put("username", "张三");
            parameters.put("mobile", "120");
            parameters.put("dept", "讲师");
            parameters.put("company", "传智播客");
            //3.将JasperPrint已PDF的形式输出
            JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, new JREmptyDataSource());
            //导出
            JasperExportManager.exportReportToPdfStream(jasperPrint, os);
        } catch (JRException e) {
            e.printStackTrace();
        } finally {
            os.flush();
        }
    }
}

打印结果: 

                                                        

数据源填充数据

JDBC数据源

    1. 配置数据连接

                              

    2. 配置数据库信息

(mysql连接:https://pan.baidu.com/s/1ekAD6cvmrWSCJiBGAPMGHg   提取码:mfbw )

    3. 制作模板

(1)制作空白模板

创建空白模板,并将不需要的Band

(2)将数据库用户字段配置到模块中

为了方便的进行模板制作,可以将需要数据库表中的字段添加到Studio中。在outline中右键模板,选择datasetand query

 

                                                                                                                 

用户可以在 SQL 查询语句输入窗口中,输入需要查询数据的查询语句,点击右上角的“ReadFields”按钮,界面下方的字段列表中,就会显示此查询语句中所涵盖的所有字段的列表。在后面的报表设计中,我们就可以直接使用这些字段了。

 

                                                           

在“Fields”列表中,只保留报表中使用的字段,其他用不到的字段最好用“Delete”删掉,防止由于数据表变化,导致报表模板中的字段设置与数据表对应不上,导致报表报错。输入完毕后,点击“OK”按钮,系统即会把查询语句保存在报表模板中。

 

(3)填充Filed

将Field字段拖入到 Detail Band中设计模板如下:

                         

Java代码:

package com.james;
import net.sf.jasperreports.engine.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

public class Demo {
    public static void main(String[] args) throws Exception {
        String filePath = "模板地址";
        FileInputStream inputStream = new FileInputStream(filePath);
        Map<String, Object> parameters = new HashMap<String, Object>(); //准备的数据 放到map中
        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, getConnection());
//    3、导出
            JasperExportManager.exportReportToPdfStream(jasperPrint, new FileOutputStream("d://demo3.pdf"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//数据库连接
    public static Connection getConnection() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/saas-export-two", "root", "root");
        return conn;
    }
}

使用JavaBean数据源

    1.创建模板(使用Create Field创建字段),将创建的字段拖至指定位置

                                                                                                    

    2.配置实体类

public class User {
//PDF的Field名称和属性名称相同
    private String id;
    private String username;
    private String company;
    private String dept;
    private String mobile;
    public User(String id,String username,String company,String dept,String mobile) {
        this.id = id;
        this.username = username;
        this.company = company;
        this.dept = dept;
        this.mobile = mobile;
    }
   setter...getter....
}

    3.java代码:

/**
 *  基于javaBean的形式填充数据
 */
public static void main(String[] args) throws Exception {
     String filePath = "模板地址";
//        文件的输入流
     InputStream inputStream = new FileInputStream(filePath);
    //2.创建JasperPrint,向jasper文件中填充数据
    FileOutputStream os = new FileOutputStream("d:\\demo4.pdf");
    try {
        Map parameters = new HashMap<>();
        //构建javaBean的数据源
        //1.获取到对象的list集合
        List<User> userList = getUserList();
        //2.通过list集合创建javaBean的数据源对象
        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(userList);
        JasperPrint print = JasperFillManager.fillReport(fis,parameters,ds);
        JasperExportManager.exportReportToPdfStream(print,os);
    } catch (JRException e) {
        e.printStackTrace();
    }finally {
        os.flush();
    }
}

public List<User> getUserList() {
    List<User> list = new ArrayList<>();
    for(int i=0;i<10;i++) {
        User user = new User(i+"", "用户"+i, "老师","James", "1380000000"+i);
        list.add(user);
    }
    return list;
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值