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
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)格式。

本文详细介绍了使用JasperReport制作报表的基本步骤,并提供了实用的Java代码示例,包括如何通过ireport工具创建jrxml模板、填充数据生成报表以及直接连接数据库产生报表的方法。
&spm=1001.2101.3001.5002&articleId=46930727&d=1&t=3&u=6430d7eb6c744c9984ff5759d6eb5622)
4860

被折叠的 条评论
为什么被折叠?



