日期:2014-05-16  浏览次数:21068 次

ireport与jasperreports开发总结


?
一。? 下载ireport( 官方网站:http://ireport.sourceforge.net),本人下载ireport3.7.0。

二。? 搭建ireport+jasperreports java开发平台。将ireport3.7.0安装路径下
???????? D:\iReport-3.7.0 \ireport\modules\ext下的(jasperreports-3.7.jar,
???????? iText-? 2.1.0.jar,iTextAsian.jar,commons-logging-1.1.jar,commons-collections-3.2.1.jar,
???????? commons- digester-1.7.jar,poi-3.2-FINAL-20081019.jar,groovy-all-1.5.5.jar)的jar包加入到?
???????? java classPath下。其中各jar包的版本以你下载的ireport的\ireport\modules\ext路径下jar为准。

??????? 各jar包作用如下:
??????? jasperreports-3.7.jar:该包的作用完成ireport中Preview按扭功能。通过该包可以通过java来ireport生成摸班
?????? (.jrxml或.jasper)填充数据源并导出pdf,excel,html等格式文件。
??????? iText-2.1.0.jar:生成pdf所依赖的包。
??????? iTextAsian.jar:支持pdf中文字体依赖的包。
??????? groovy-all-1.5.5.jar:将.jrxml编译成.jasper.如果你不使用java编译,而使用ireport工具编译则无须导入该 包。
??????? commons-digester-1.7.jar:解析.jrxml
??????? poi-3.2-FINAL-20081019.jar:生成excel报表所依赖的jar

三。使用javaBean数据源开发子报表例子如下:

????? 第一步:创建主报表javaBean(货物)如下(set,get方法省列):

???? public class DailySales implements Serializable {
???? private static final long serialVersionUID = 1L;

???? private String productNo;//货物代号

???? private String productName;//货物名称

??? ?private int number;

???? private int money;//货物价格

?????private int id;//货物唯一标识

???? private List<DailyZoom> dailyZooms;//货物销售地区(子报表)

???? public DailySales(String productNo, String productName, int number, int money,

?????List<DailyZoom>?? dailyZooms) {
?????this.productNo = productNo;
???? this.productName = productName;
???? this.number = number;
???? this.money = money;
???? this.dailyZooms = dailyZooms;
??? }

}

?? 第二步:创建子报表报表javaBean(货物销售地区)如下(set,get方法省列):

? public class DailyZoom implements Serializable {

??? private String name;

??? private BigDecimal amounts;

??? public DailyZoom(String name, BigDecimal amounts) {
??? this.name = name;
??? this.amounts = amounts;
??? }

}

注意:如果在报表中需要排序则上述类必须实现Comparable接口,并实现其方法。

?

? 第三步:创建DailySalesFactory工厂类提供集合数据源如下:

?????? public class DailySalesFactory {
?????? private static DailySales[] data = { new DailySales(" 货号 1", " 物品1 ", 1, 1000, getDailyZoom()),
?????? new DailySales(" 货号 2", " 物品 2", 2, 2000, getDailyZoom()),
?????? new DailySales(" 货号 3", " 物品 3", 3, 3000, getDailyZoom()),
?????? new DailySales(" 货号 4", " 物品 4", 4, 4000, getDailyZoom()),
?????? new DailySales(" 货号 5", " 物品 5", 5, 5000, getDailyZoom()),
?????? new DailySales(" 货号 6", " 物品 6", 6, 6000, getDailyZoom()),
?????? new DailySales(" 货号 7", " 物品 7", 7, 7000, getDailyZoom()),
?????? new DailySales(" 货号 8", " 物品 8", 8, 8000, getDailyZoom()),
?????? new DailySales(" 货号 9", " 物品 9", 9, 9000, getDailyZoom()),
?????? new DailySales(" 货号 10", " 物品 10", 10, 10000, getDailyZoom()) };

?????? public static Object[] getBeanArray() {
??????? return data;
?????? }

?????? public static Collection getBeanCollection() {
??????? return Arrays.asList(data);
?????? }

????? public static List getDailyZoom() {
????? List<DailyZoom> dailyZooms = new ArrayList();
???? dailyZooms.add(new DailyZoom("厦门", new BigDecimal(123.00)));
???? dailyZooms.add(new DailyZoom("南昌", new BigDecimal(456.00)));
???? return dailyZooms;
???? }
?? }

将上述创建的类设置到ireport3.7.0的classPath目录下(工具》选项》classPath),然后配置javaBean数据源如下:

第四步:设定ireport模版如下:



?

?
注意:(1)pdf中文设定:首先将iTextAsian.jar設置到classPath下.然後fonts path下勾選iTextAsian.jar路徑和jasperreports-extensions-3.5.3.jar路徑,最後将会显示中文的文本Pdf Font name is now deprecated:STSong-Light,pdfExcoding:UniGB-UCS2-V (Chinese