`
zhyt710
  • 浏览: 203511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jasper--helloworld

阅读更多

主要内容参考http://blog.csdn.net/leafxx/archive/2006/03/16/626700.aspx

 

 

JasperReports的报表是用XML文件来定义的,约定用jrxml作后缀名。一个典型的jrxml文件包含以下元素:

    * <jsperReport> - 根元素

    * <title> - 报表的标题,一篇报表里只在开头打印一次

    * <pageHeader> - 页眉,报表每页开头打印一次

    * <detail> - 报表正文

    * <pageFooter> - 页脚,报表每页末尾打印一次

    * <band> - 定义报表部件,以上所有元素都包含一个band元素作为他们唯一的子元素

除了root元素,所有的元素都是可选的。这里是一个jrxml文件的例子,它将生成一个显示字符串“你好,世界!”的简单报表。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport
  PUBLIC "-//JasperReports//DTD Report Design//EN"
  "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="structure">
  <detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <textElement>
			<font fontName="宋体" size="12" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
		</textElement>
        <text><![CDATA[你好,世界!]]></text>
      </staticText>
    </band>
  </detail>
</jasperReport>

在这个简单的例子中,我没有写可选项<title>, <pageHeader>还有<pageFooter>。<staticText>元素,顾名思义,在报表上显示静态的文本,就像你所看到的,它包含了一个单独的<text>元素定义将要显示的文本。

jrxml文件需要“编译”成JasperReports规范的二进制格式,可以调用类net.sf.jasperreports.engine.JasperCompileManager的方法compileReport()来实现。这个方法有几种重载的形式,在我们的例子中,我们将用到的是单个字符串为参数的方法。参考JasperReport文档以获得这个方法其他版本的详细信息。

package tutorial;

import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;
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 Structure {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {

		JasperReport jasperReport;
		JasperPrint jasperPrint;
		try {
			//编译报表设计
			jasperReport = JasperCompileManager
					.compileReport("reports/structure.jrxml");
			//在模板中填充数据
			jasperPrint = JasperFillManager.fillReport(jasperReport,
					new HashMap(), new JREmptyDataSource());
			//输出pdf文件
			JasperExportManager.exportReportToPdfFile(jasperPrint,
					"reports/structure.pdf");

		} catch (JRException e) {
			e.printStackTrace();
		}

	}

}

 

一个jrxml文件只需要编译一次,但在这个简单例子中,每次执行程序都会被编译。在报表生成之前,需要用数据来“填充”它,在这里我们调用net.sf.jasperreports.engine.JasperFillManager类里的fillReport()方法。同样的,它也有许多重载的形式,这里我们用到了其中一个具有三个参数的方法,第一个是JasperReport的实例, 第二个是HashMap,它可以包含任何要传递给report的参数,第三个参数对象要实现JRDataSource接口。这个方法的使用在我们的例子里面是:
jasperPrint = JasperFillManager.fillReport(
          jasperReport, new HashMap(), new JREmptyDataSource());
因为我们的例子里的report类不需要任何参数,所以传给一个它一个空的HashMap,第三个参数net.sf.jasperreports.engine.JREmptyDataSource是一个实现了JRDataSource接口的简便类,这个基本类不包含任何数据。
The parameters are self-explanatory.
最后,在例子中,我们将报表导出为PDF文件,可以用Adobe Acrobat, XPDF, Evince或其他PDF阅读工具打开。在例子中的代码是:JasperExportManager.exportReportToPdfFile(
          jasperPrint, "reports/structure.pdf");

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics