JasperReport学习笔记(一)

本文详细介绍了使用JasperReport制作报表的基本步骤,并提供了实用的Java代码示例,包括如何通过ireport工具创建jrxml模板、填充数据生成报表以及直接连接数据库产生报表的方法。

JasperReport学习笔记(一)
1.使用JasperReport制作报表的基本步骤:
a.编写jrxml模板(使用ireport工具);
b.将jrxml编译成jasper文件;
c.填充数据,生成JasperPrint对象;
d.使用JasperPrint 输出所需报表(pdf,excel,csv,html)等。

2.jrxml 模板文件介绍
2.1 jrxml结构:从前到后依次为:Title,pageTitle,ColumnHead,Detail,ColumnFoot,PageFoot,Summary.
Title :只在第一页的头部显示;
pageTitle:每一页的头部都显示,其中第一页的pageTitle位于Title下方;
ColumnHead:表格的Title,与html中Table的含义一样,用于说明(metadata)。
Detail:重点,数据明细,也就是我们要循环的那一部分。
ColumnFoot:表格的Foot,与html中Table的含义一样。
PageFoot:每一页的页脚,常用的是我们可以做页数显示。
Summary:合计,在报表最后一行。

2.2 jrxml中的数据种类:StaticText,Field,Variable。
StaticText:静态文本,在jrxml中写死的部分,不能改变,比如报表的Title一般是写死的。
Field:属性,这个是用在Detail部分的,用来显示List map的key对应的value
Variable:这是JasperReport build-in 的一些数据,很有用。PAGE_NUMBER(第几页),COLUMN_NUMBER(第几行),PAGE_COUNT(总页数),COLUMN_COUNT(总行数)。
Parameter 参数,对应java代码中的parameters,用来显示一些说明性的内容。比如时间,出报表的用户,报表的会社。

2.3 实用java封装数据,调用JasperReport生成报表。

package com.founder.test;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;


public class Test1 {
 public static void main(String[] args) {
  try{ 
   //list 集合是做报表的核心数据,在jrxml中对应Detail的部分。也就是需要循环的数据。
   List<Map> lists = new ArrayList<Map>();
   //一张报表不可能及时明细 数据摆在那里,还有很多其他的说明文字,这些文字都封装 在parameters中。
   //在明细list之外,我们还需要很多其他的参数,比如出报表的时间。
   Map<String,String> parameters = new HashMap<String,String>();
   parameters.put("CTime", new Date().toString());

   //获取明细list
   Class.forName("com.mysql.jdbc.Driver");
   Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1","root","123456");
   String sql = "SELECT id ,name,password from t_teacher_inf;";
   ResultSet rs = conn.prepareStatement(sql).executeQuery();
   while(rs.next()){
    int id = rs.getInt("id");
    String name = rs.getString("name");
    String password = rs.getString("password");
    Map m = new HashMap();
    m.put("id", id);
    m.put("name", name);
    m.put("password", password);
    lists.add(m);
   }

   //加载jrxml模板
   JasperDesign jd = JRXmlLoader.load(new File("F:\\a.jrxml"));
   //编译模板
   JasperReport jr =  JasperCompileManager.compileReport(jd);
   //填充数据
   JasperPrint jp = JasperFillManager.fillReport(jr, parameters, 
    new JRBeanArrayDataSource(lists.toArray()));
   String s = "E:\\a.pdf";
   //pdf 类型报表作成
   JasperExportManager.exportReportToPdfFile(jp,s);
  }catch(Exception e){
   e.printStackTrace();
  }
}

}

2.4 使用ireport直接连接数据库来产生报表。
a. Data > Connectoins/Datasources > New 下新建数据库连接。
b. Data > Report query 下新建对应的sql
c. 建立 >执行报表使用动态连接。此时会生成对应Jasper文件和报表文件(默认为paf)格式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值