您的位置:首页 > 编程语言 > ASP

java(ireport+jasperreport)创建报表

2010-08-20 17:33 435 查看
首先,确定你的ireport和jasperreport的版本是否一致,不一致会出现意外问题(如:detail的数据不显示,我就被这个折磨的很久...)

jar有commons-logging.jar/groovy.jar/asm.jar/mysql-connector-java.jar/jasperreports.jar/poi-3.5-FINAL.jar/log4j.jar/ognl.jar

理论知识不介绍,直接操作:

这里说一下,报表的数据源有两种形式,1.对数据库的查询结果,在ireport里需要创建数据库的连接,编写查询语句,将查询结果赋给field字段,而java传给一个Connection;2.JavaBean提供的list(Bean)数据,ireport中只需要建立$F{Bean的属性名称},拖入编辑面板。

一)

1。ireport软件中建立报表模板,

1)建立一个对Mysql数据库的连接


(由于图片不能上传,写下ireport中的操作:Connection/Datasources---new Database JDBC connection)

2)创建查询,点击ok结果会自动转为field类型(Report query)



3)将Fields中的filed拖入编辑面板,至于布局啥的,不多说

而后,点击小锤子compile report编译,将文件XXX.jasper拷贝放入java工程中某位置(在哪不要求,能够得到其path就可以)

下面就是java编码了

//文件保存地址
File resultExcel = new File("./WebContent/WEB-INF/"
+ "/reportfile/employee.xls");

try {
String url ="jdbc:mysql://127.0.0.1:3306/bbs" ;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn= DriverManager.getConnection(url,"root","123");

JasperPrint jasperPrint = JasperFillManager.fillReport("./WebContent/WEB-INF/"
+ "/jasper/XXXX.jasper", null, conn);
JRXlsExporter exporter = new JRXlsExporter();

exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
// 删除记录最下面的空行
exporter.setParameter(
JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
true);
// 显示边框
exporter.setParameter(
JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, true);
// 删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
false);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
resultExcel.toString());
exporter.exportReport();
conn.close();
System.out.println("Success !");
} catch (Exception e) {
System.out.println("wrong !");
e.printStackTrace();
}


二)

1.数据对象类

package com.qqtech.pojo;

public class User{
public String name;
public String password ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setAge(String password) {
this.password = password;
}

public User(String n){
this.name = n;
this.password = "123";
}
}


2.

List<User> list = new ArrayList<User>();
User user;
for(int i=0;i<10;i++){
user = new User("User"+i);
list.add(user);
}
JRBeanCollectionDataSource _source = new JRBeanCollectionDataSource(
list);
File resultExcel = new File("./WebContent/WEB-INF/"
+ "/reportfile/user.xls");

try {
JasperPrint jasperPrint = JasperFillManager.fillReport("./WebContent/WEB-INF/"
+ "/jasper/user.jasper", null, _source);

JRXlsExporter exporter = new JRXlsExporter();
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
// 删除记录最下面的空行
exporter.setParameter(
JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
true);
// 显示边框
exporter.setParameter(
JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, true);
// 删除多余的ColumnHeader
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
false);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
resultExcel.toString());
exporter.exportReport();
System.out.println("Success !");
} catch (Exception e) {
System.out.println("wrong !");
e.printStackTrace();
}


参考资料:】

http://express.ruanko.com/ruanko-express_3/webpage/tech-overnight_1.html

http://blog.163.com/pqg_iloveyou/blog/static/33351875200710610411367/?fromdm&fromSearch&isFromSearchEngine=yes

报表属性设置:http://cctv663.blog.163.com/blog/static/10119212200721552441765/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: