1. 用ireport绘制出.jrxml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
name="hejie"
columnCount="1"
printOrder="Vertical"
orientation="Portrait"
pageWidth="595"
pageHeight="842"
columnWidth="535"
columnSpacing="0"
leftMargin="30"
rightMargin="30"
topMargin="20"
bottomMargin="20"
whenNoDataType="NoPages"
isTitleNewPage="false"
isSummaryNewPage="false">
<property name="ireport.scriptlethandling" value="2" />
<property name="ireport.encoding" value="UTF-8" />
<import value="java.util.*" />
<import value="net.sf.jasperreports.engine.*" />
<import value="net.sf.jasperreports.engine.data.*" />
<queryString><![CDATA[select * from testhe]]></queryString>
<field name="id" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<background>
<band height="0" isSplitAllowed="true" >
</band>
</background>
<title>
<band height="50" isSplitAllowed="true" >
<staticText>
<reportElement
x="200"
y="11"
width="124"
height="35"
key="staticText-1"/>
<box></box>
<textElement textAlignment="Center">
<font size="18"/>
</textElement>
<text><![CDATA[My report]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="0" isSplitAllowed="true" >
</band>
</pageHeader>
<columnHeader>
<band height="30" isSplitAllowed="true" >
<staticText>
<reportElement
x="37"
y="6"
width="96"
height="22"
key="staticText-2"/>
<box></box>
<textElement textAlignment="Left">
<font/>
</textElement>
<text><![CDATA[ID]]></text>
</staticText>
<staticText>
<reportElement
x="346"
y="4"
width="117"
height="25"
key="staticText-3"/>
<box></box>
<textElement textAlignment="Left">
<font/>
</textElement>
<text><![CDATA[NAME]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="30" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="37"
y="6"
width="96"
height="18"
key="textField"/>
<box></box>
<textElement>
<font/>
</textElement>
<textFieldExpression class="java.lang.Integer"><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="346"
y="6"
width="117"
height="18"
key="textField"/>
<box></box>
<textElement>
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="30" isSplitAllowed="true" >
</band>
</columnFooter>
<pageFooter>
<band height="50" isSplitAllowed="true" >
</band>
</pageFooter>
<lastPageFooter>
<band height="50" isSplitAllowed="true" >
</band>
</lastPageFooter>
<summary>
<band height="50" isSplitAllowed="true" >
</band>
</summary>
</jasperReport>
2.实体类,也可以是vo
public class TestHe {
private Integer id;
private String name;
...
}
3.过滤器,用于过滤集合中要显示的数据
import java.util.List;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
public class MyJRDataSource implements JRDataSource {
private List datas; // 从数据库中查询出来的集合
private int loop = -1; //当前遍历点
public MyJRDataSource(List datas) { //初始化用
super();
this.datas = datas;
}
public MyJRDataSource() {
super();
// TODO Auto-generated constructor stub
}
@Override
public Object getFieldValue(JRField field) throws JRException { //过滤主要部分,他跟next交叉运行的
// TODO Auto-generated method stub
String fname = field.getName();
TestHe th = (TestHe) this.datas.get(loop);
if("id".equals(fname)){
return th.getId();
}
if("name".equals(fname)){
return th.getName();
}
return null;
}
@Override
public boolean next() throws JRException {//移动loop
// TODO Auto-generated method stub
loop++;
if (loop >= datas.size()) {
return false;
} else {
return true;
}
}
}
4. 主类,东西比较多烦了点
import java.io.File;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
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;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// getJrxml();
try {
JasperReport jr = getJR();//.....
System.out.println(jr);
List l = getList();//......
getReport(jr,l); //....
System.out.println(l.size());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//废弃
public static void getJrxml(){
InputStream is = Test.class.getClassLoader().getResourceAsStream("test.jrxml");
System.out.println(is);
}
//从数据库中查询查数据
public static List getList() throws ClassNotFoundException, SQLException{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/hejietest";
String username = "root";
String password = "hejie";
Class.forName(driver);
List<TestHe> list = null;
Statement sta = null;
ResultSet rs = null;
Connection con = null;
try {
con = DriverManager.getConnection(url,username,password);
sta = con.createStatement();
rs = sta.executeQuery("select id ,name from testhe");
list = new ArrayList<TestHe> ();
while(rs.next()){
TestHe th = new TestHe();
th.setId(rs.getInt(1));
th.setName(rs.getString(2));
list.add(th);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rs!=null)rs.close();
if(sta!=null)sta.close();
if(con!=null)con.close();
}
return list;
}
//拿到对于德jasperreport,jasperreport就是我们要建立的报表对象
public static JasperReport getJR() throws JRException{
String dir = "";
dir = new File("test.jrxml").getAbsolutePath();
System.out.println(dir);
return JasperCompileManager.compileReport(dir);
}//导出报表
public static void getReport(JasperReport jr , List<TestHe> ths) throws JRException{
JasperPrint jasperPrint = JasperFillManager.fillReport(jr,null,new MyJRDataSource(ths));
JasperExportManager.exportReportToPdfFile(jasperPrint, "test.pdf");
// System.out.println(ex);
System.out.println("ok");
}
}
分享到:
相关推荐
【ireport&jsperreport学习资料】是一份包含详尽内容的压缩包,主要涵盖了两款在Java领域中广泛使用的报表工具——iReport和JasperReport的学习资源。这两款工具是用于设计和生成复杂的业务报告的强大工具,尤其适用...
**JSPERREPORT DEMO详解** 这个DEMO主要展示了如何使用iReport(或Jaspersoft Studio)设计工具和JasperReport库生成报表。首先,我们有三个关键文件: 1. **report.jasper**: 这是编译后的报表文件,包含了报表的...
【Java Hibernate iReport JasperReport 制作报表】 在IT领域,报表系统是不可或缺的一部分,它帮助企业分析、展示数据,从而做出决策。Java平台提供了多种工具来实现报表制作,其中iReport和JasperReport是非常...
**永泰决策分析系统——ireport与jasperreport操作指南** **1. 引言** 本操作手册旨在为用户详细解读如何使用ireport与jasperreport工具进行报表设计与生成,以便在永泰决策分析系统中实现高效的数据可视化和业务...
这个“struts2JsperReport.rar”压缩包显然包含了一个使用Struts2框架实现的报表示例项目。在这个项目中,开发者可能结合了其他几种技术,如Spring2、Hibernate3以及JasperReport,来创建一个功能完善的报表系统。 ...
《iReport与JasperReports:打造高效报表设计与呈现》 在信息技术领域,报表系统是企业数据管理和决策支持的关键组成部分。iReport与JasperReports,作为开源报告工具,为企业提供了强大的报表设计和生成能力。...
**JasperReport 实例详解** JasperReport 是一个开源的报告生成库,广泛应用于Java应用程序中,用于创建复杂的报表和文档。...在本实例中,我们将深入探讨如何使用JasperReport与Apache POI库结合,实现Excel表格和PDF...
SpringBoot是一款轻量级的Java应用框架,它简化了在Spring框架上构建应用程序的过程。而JasperReport是一款强大的开源报表工具,能够帮助开发者创建、设计和展示复杂的业务报告。将两者整合,可以让SpringBoot应用...
JasperReport 6.5.1安装包,分享给初学者,免除下载速度太慢和注册账户的烦恼!!!!!!
JasperReport是一个强大的Java报告库,它允许开发者创建复杂、美观的报表,广泛应用于企业级应用中。在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。...
在IT行业中,报表生成是数据分析和业务展示的重要环节。...本主题将深入探讨如何利用JasperReport实现动态单元格合并,支持多层分组排序和多分组动态合并单元格。 首先,我们要理解JasperReport的基本概念。...
在压缩包中的"jsperreport"文件可能是JasperReports相关项目的压缩文件,可能包含JRXML模板、样本数据、或者示例代码。解压后,你可以通过IReport打开JRXML文件进行查看或编辑,或者用Java代码调用JasperFillManager...
#### 二、在 OpenReports 中配置 JsperReport ##### 1. 上传报表定义文件 myJsperReport.jasper 通过 OpenReports 的后台管理系统,将 `myJsperReport.jasper` 文件上传至服务器,并将其关联到相应的数据源。 ###...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题