`
jie2workjava
  • 浏览: 151136 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jsperreport

阅读更多

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学习资料

    【ireport&jsperreport学习资料】是一份包含详尽内容的压缩包,主要涵盖了两款在Java领域中广泛使用的报表工具——iReport和JasperReport的学习资源。这两款工具是用于设计和生成复杂的业务报告的强大工具,尤其适用...

    JSPERREPORT DEMO

    **JSPERREPORT DEMO详解** 这个DEMO主要展示了如何使用iReport(或Jaspersoft Studio)设计工具和JasperReport库生成报表。首先,我们有三个关键文件: 1. **report.jasper**: 这是编译后的报表文件,包含了报表的...

    java Hibernate ireport jsperreport 制作报表

    【Java Hibernate iReport JasperReport 制作报表】 在IT领域,报表系统是不可或缺的一部分,它帮助企业分析、展示数据,从而做出决策。Java平台提供了多种工具来实现报表制作,其中iReport和JasperReport是非常...

    ireport+jsperreport操作文档

    **永泰决策分析系统——ireport与jasperreport操作指南** **1. 引言** 本操作手册旨在为用户详细解读如何使用ireport与jasperreport工具进行报表设计与生成,以便在永泰决策分析系统中实现高效的数据可视化和业务...

    struts2JsperReport.rar

    这个“struts2JsperReport.rar”压缩包显然包含了一个使用Struts2框架实现的报表示例项目。在这个项目中,开发者可能结合了其他几种技术,如Spring2、Hibernate3以及JasperReport,来创建一个功能完善的报表系统。 ...

    iReport-5.6.0 + jsperreport6.6.0

    《iReport与JasperReports:打造高效报表设计与呈现》 在信息技术领域,报表系统是企业数据管理和决策支持的关键组成部分。iReport与JasperReports,作为开源报告工具,为企业提供了强大的报表设计和生成能力。...

    Jasperreport 实例

    **JasperReport 实例详解** JasperReport 是一个开源的报告生成库,广泛应用于Java应用程序中,用于创建复杂的报表和文档。...在本实例中,我们将深入探讨如何使用JasperReport与Apache POI库结合,实现Excel表格和PDF...

    springboot整合JasperReport实现报表功能

    SpringBoot是一款轻量级的Java应用框架,它简化了在Spring框架上构建应用程序的过程。而JasperReport是一款强大的开源报表工具,能够帮助开发者创建、设计和展示复杂的业务报告。将两者整合,可以让SpringBoot应用...

    JasperReport 6.5.1 安装包

    JasperReport 6.5.1安装包,分享给初学者,免除下载速度太慢和注册账户的烦恼!!!!!!

    jasperreport一个子报表的例子

    JasperReport是一个强大的Java报告库,它允许开发者创建复杂、美观的报表,广泛应用于企业级应用中。在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。...

    基于Jasperreport动态单元格合并模板

    在IT行业中,报表生成是数据分析和业务展示的重要环节。...本主题将深入探讨如何利用JasperReport实现动态单元格合并,支持多层分组排序和多分组动态合并单元格。 首先,我们要理解JasperReport的基本概念。...

    jasper ireport 生成 报表

    在压缩包中的"jsperreport"文件可能是JasperReports相关项目的压缩文件,可能包含JRXML模板、样本数据、或者示例代码。解压后,你可以通过IReport打开JRXML文件进行查看或编辑,或者用Java代码调用JasperFillManager...

    OpenReports中的JasperReport开发

    #### 二、在 OpenReports 中配置 JsperReport ##### 1. 上传报表定义文件 myJsperReport.jasper 通过 OpenReports 的后台管理系统,将 `myJsperReport.jasper` 文件上传至服务器,并将其关联到相应的数据源。 ###...

    Struts2.0+JasperReport+IReport+Oracle 报表开发 2/3

    Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题

Global site tag (gtag.js) - Google Analytics