- 浏览: 239399 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
jy00509336:
wgrmmtmr 写道let g:miniBufExplMap ...
用Gvim建立IDE编程环境 (Windows篇) -
wgrmmtmr:
let g:miniBufExplMapWindowsNavV ...
用Gvim建立IDE编程环境 (Windows篇) -
jy00509336:
avi9111 写道还是同样问题,你这个代码ctrl+c和ct ...
JTextField只允许输入数字和字母 -
avi9111:
还是同样问题,
你这个代码
ctrl+c和ctrl+v粘贴 ...
JTextField只允许输入数字和字母 -
jy00509336:
ILoveDOUZHOU 写道windows下为什么使用vim ...
用Gvim建立IDE编程环境 (Windows篇)
转载自:http://www.blogjava.net/bulktree/archive/2008/12/12/245834.html
JasperFillManager.fillReport()这个方法在使用JDBC数据源时采用一个打开的数据库连接(getConn),除此之外jasperReport给我们提供了一个JRDataSource接口,用以实现我们自己的数据源
JRDataSource接口只有两个方法
public interface JRDataSource
{
/**
* 针对当前的数据源返回游标指向的下一个元素的值,
*
*/
public boolean next() throws JRException;
/**
* 返回游标指向的当前值
*
*/
public Object getFieldValue(JRField jrField) throws JRException;
}
JRBeanCollectionDataSource{
/**
* 针对当前的数据源返回游标指向的下一个元素的值,
*
*/
public boolean next() throws JRException;
/**
* 返回游标指向的当前值
*
*/
public Object getFieldValue(JRField jrField) throws JRException;
}
此种方式是最简单的一种,查看API我们就可以发现,JRBeanCollectionDataSource继承JRAbstractBeanDataSource类,而JRAbstractBeanDataSource是一个抽象类它间接的实现了JRDataSource这个接口,所以我们就可以不用自己去实现next()/getFieldValue()这两个方法了。
看到JRBeanCollectionDataSource这个类名大概就知道怎么用了吧!
我们的模板文件还是上篇的JDBC数据源的模板,只是没有了查询语句,手工建立所需的几个字段(域)
新建一vo对象Person.java,最基本的getter、setter方法
package org.bulktree.ireport.customdata;
/**
* custom data
*
* @author bulktree Email: laoshulin@gmail.com @ Nov 7, 2008
*/
public class Person {
private String pid;
private String name;
private String sex;
private String age;
private String password;
private String department;
public Person(String pid, String name, String sex, String age, String password,
String department) {
this.pid = pid;
this.name = name;
this.sex = sex;
this.age = age;
this.password = password;
this.department = department;
}
public Person() {
}
}
/**
* custom data
*
* @author bulktree Email: laoshulin@gmail.com @ Nov 7, 2008
*/
public class Person {
private String pid;
private String name;
private String sex;
private String age;
private String password;
private String department;
public Person(String pid, String name, String sex, String age, String password,
String department) {
this.pid = pid;
this.name = name;
this.sex = sex;
this.age = age;
this.password = password;
this.department = department;
}
public Person() {
}
}
下来准备数据
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
既然它是一个BeanCollection我们 就来一个从conllection吧!
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
查看API,JRBeanCollectionDataSource的构造函数
list.add(p1);
public JRBeanCollectionDataSource(Collection beanCollection)
{
this(beanCollection, true);
}
/**
*
*/
public JRBeanCollectionDataSource(Collection beanCollection, boolean isUseFieldDescription)
{
super(isUseFieldDescription);
this.data = beanCollection;
if (this.data != null)
{
this.iterator = this.data.iterator();
}
}
看看描述我们使用第一个
{
this(beanCollection, true);
}
/**
*
*/
public JRBeanCollectionDataSource(Collection beanCollection, boolean isUseFieldDescription)
{
super(isUseFieldDescription);
this.data = beanCollection;
if (this.data != null)
{
this.iterator = this.data.iterator();
}
}
JRDataSource datesource = new JRBeanCollectionDataSource(list);
这个数据源就构造完毕了,很简单吧!这样报表就可以预览了,完整的代码如下:
package org.bulktree.ireport.customdata;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
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;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
public class JasperReportDemo {
public static void main(String[] args) throws Exception {
JasperReportDemo jrd = new JasperReportDemo();
jrd.reportMethod(jrd.getMap());
}
public void reportMethod(Map map) throws Exception {
JasperReport jasperReport = null;
JasperPrint jasperPrint = null;
try {
/*
* File file = new File("Person.jrxml"); InputStream in = new
* FileInputStream(file); // 编译报表 jasperReport =
* JasperCompileManager.compileReport(in);
*/
// 实际中编译报表很耗时,采用Ireport编译好的报表
jasperReport = (JasperReport) JRLoader
.loadObject("D:\\workspace\\Person.jasper");
// 填充报表
jasperPrint = JasperFillManager
.fillReport(jasperReport, map, getDataSource());
// JasperExportManager.exportReportToHtmlFile(jasperPrint,
// "test.html");
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
} catch (JRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public Map getMap() {
Map map = new HashMap();
map.put("reportTitle", "laoshulin");
return map;
}
public JRDataSource getDataSource() throws Exception {
// 自定义数据源
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
JRDataSource datesource = new JRBeanCollectionDataSource(list);
return datesource;
}
}
看看效果吧!import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
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;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
public class JasperReportDemo {
public static void main(String[] args) throws Exception {
JasperReportDemo jrd = new JasperReportDemo();
jrd.reportMethod(jrd.getMap());
}
public void reportMethod(Map map) throws Exception {
JasperReport jasperReport = null;
JasperPrint jasperPrint = null;
try {
/*
* File file = new File("Person.jrxml"); InputStream in = new
* FileInputStream(file); // 编译报表 jasperReport =
* JasperCompileManager.compileReport(in);
*/
// 实际中编译报表很耗时,采用Ireport编译好的报表
jasperReport = (JasperReport) JRLoader
.loadObject("D:\\workspace\\Person.jasper");
// 填充报表
jasperPrint = JasperFillManager
.fillReport(jasperReport, map, getDataSource());
// JasperExportManager.exportReportToHtmlFile(jasperPrint,
// "test.html");
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
} catch (JRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public Map getMap() {
Map map = new HashMap();
map.put("reportTitle", "laoshulin");
return map;
}
public JRDataSource getDataSource() throws Exception {
// 自定义数据源
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
JRDataSource datesource = new JRBeanCollectionDataSource(list);
return datesource;
}
}
简简单单的几行代码就可以完成一个简单的报表,我们看到的这些工具栏图表还有窗口的一些标题啊等等都可以自己的定制哦,下来慢慢介绍!
发表评论
-
禁用JavaWeb应用中URL上包含的jsessionid
2014-03-21 13:02 1544Java Web 应用似乎总有这样的情况,有事没事总是要在 ... -
java操作保存图片到oracle数据库及获取图片到页面显示
2014-03-21 13:00 1347《--------保存图片到数 ... -
jsp页面通过java调用oracle blob字段显示图片
2014-03-21 12:58 1048转载自:http://blog.csdn.net/javad ... -
正则表达式中在多个匹配的内容中间加字符
2014-03-04 21:35 854selectedText = selectedText.rep ... -
ServletFileUpload parseRequest异常处理
2013-07-16 17:31 1671今天在linux服务器上发布程序后,上传图片处理异常,详情如 ... -
log4j时区设置
2013-03-21 17:23 32322013年3月19日更新程序后,服务器上的码表一直加载不上, ... -
JDBC连接报ORA-12505,sid无法找到
2013-02-06 11:10 3588转载自:http://www.calcprofit.com/ ... -
Javascript网页打印大全
2012-10-11 09:21 1266转载自:http://www.cnblogs.com/gaku ... -
Servlet编程之用Servlet显示图片
2012-09-04 21:38 1205转载自:http://developer.51cto.com/ ... -
tomcat JNDI 连接池
2012-08-02 10:59 960一.在tomcat_home/common/lib下放入 ... -
JTextArea->JTextPane 解决文字对齐方式的问题
2012-04-09 15:08 4147转载自:http://www.blogjava.net/cer ... -
jquery下json数组的操作用法实例
2011-08-13 10:51 3179转载自:http://blog.csdn.ne ... -
能盖住Select的Div
2011-07-15 23:16 923<html> <head> ... -
jQuery.extend 函数详解
2011-07-11 10:12 897转载自:http://www.cnblogs.com/Ra ... -
利用js获取服务器时间的两个简单方法
2011-07-08 14:57 1573有时用js来获取服务器时间。一般会用System.DateTi ... -
jQuery获取表单项目以及AJAX应用
2011-07-07 09:28 1102转载自:http://www.tsingfeng.com/?p ... -
velocity date.format
2011-06-27 19:39 4074Today's date is: $dateT ... -
Java中修改derby.log文件的路径
2011-04-29 15:26 2108项目中用到derby嵌入式数据库。可是其log文件derby. ... -
socket, nio socket 及nio socket框架MINA总结
2011-04-07 16:55 1168来源:http://blog.csdn.net/lcllc ... -
PreparedStatement 数据大小超出此类型的最大值
2011-03-04 11:17 1921转载自:http://heath-derek.iteye.co ...
相关推荐
iReport+JasperReport柱状图 iReport+JasperReport柱状图 iReport+JasperReport柱状图
iReport+jasperReport之客户端打印 数字签名
iReport+JasperReport教材两本以及demo
ireport4.1+jasperReport4.5+Swing总结.doc
详细介绍了如何利用ireport+jasperreport柱状图例子,并附有代码,参照实例,手把手教你用该解决方案作柱状图。
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
看看代码你就知道报表开发有多简单。由于jar包太多,所以没有附带,你可以安装ireport3.0.0后,ireport安装目录下的lib文件下的jar包就是本实例的jar包,但是struts的包需要你自己加入。
ireport+jasperreport一个小例子
使用ireport和struts2进行报表...java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习报表的作参考。没分了,收个友情分1分,勿怪。
很好的ireport入门指导资料
里面有多个文档,帮助您快速开发报表,从简单到复杂
50.iReport中的子报表如何实现根据其上部是否有打印数据而变打印位置? 49.iReport中当单元格中的文字出现换行跨页的情况,如何保证换行的字段能够正常显示,并且保证换行后同行的高度保持一致? 48.内嵌函数的使用 ...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
该工程下有ssh所需jar包,hicharts报表导出功能所需jar包,以及Jasperreport报表导出所需的jar包,主要是利用Jasperreport实现报表导出功能,可以完整跑通
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
jasperreport+ireport+jfreechart文档及代码1 jasperreport+ireport+jfreechart文档及代码1 jasperreport+ireport+jfreechart文档及代码1
Ireport4.0.2+jasperReport4.0.2整合 的开发工具 用于strust2的完美结合 生成任何格式的报表(pdf、xml、xls、html)。。。。。。本人已实现
Ireport4.0.2+jasperReport4.0.2整合 的开发工具 用于strust2的完美结合 生成任何格式的报表(pdf、xml、xls、html)。。。。。。本人已实现
Ireport4.0.2+jasperReport4.0.2整合 的开发工具 用于strust2的完美结合 生成任何格式的报表(pdf、xml、xls、html)。。。。。。本人已实现
Ireport4.0.2+jasperReport4.0.2整合 的开发工具 用于strust2的完美结合 生成任何格式的报表(pdf、xml、xls、html)。。。。。。本人已实现