一 相关基础知识
1.关于JasperReport和iReport
Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等.
而iReport就是一个可以帮助我们制作Jasperreport的XML文件的可视化开发工具。他的作用和dreamware的作用是类似的.
2、下载iReport和jasperReport
官方网址:http://community.jaspersoft.com
1) 下载 jasperreport
截至 2013/12/13, 最新版本是 5.1
jasperreport 下载地址:
http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.1.0/
jasperreports-5.1.0.jar对应的jar 包
jasperreports-5.1.0-project.zip开发的源代码( 包含源码和lib 包)
建议是两个都下载。(需使用包和相应的依赖包)
2) 下载 ireport
http://community.jaspersoft.com/project/ireport-designer
二. 简单测试实例
这里以简单产生一个pdf文件为例。 (在 pdf 中输入一行文字)
1. 在Eclipse 新建一个java Project。 并导入以下lib包(从以上的下载中可以找到)
castor-1.2.jar
commons-beanutils-1.8.0.jar
commons-collections-2.1.1.jar
commons-digester-2.1.jar
commons-logging-1.1.1.jar
iText-2.1.7.js2.jar
jasperreports-5.1.0.jar
如果嫌麻烦, 可以将下载的jasperreports jar 包和开发源码包中所有的lib 到导入
2. 在项目根路径下新建 HelloJasperReport.jrxml,内容如下
3. 在com.oscar999包下,新建 HelloJasperReport.java
4. 运行之后, 会发现在项目根路径下会多出一个 HelloJasperReport.pdf 的文件。打开就可以看到效果。
三. 总结
这里只是一个最简单的实例。
1. 除了可以导出pdf 格式之外,还可以导出很多其他的格式。
2. 可以取数据库数据进行展现
3. jrxml 该如何写? 使用iReport 这个工具就可以很容易的通过界面的方式画出这个文件。
//打印预览 文件名 参数map 表模型
public static void printPreview(String fileName, Map parameters, TableModel model) {
try {
//建立---->Jasper表模型
JRTableModelDataSource ds = new JRTableModelDataSource(model);
//填充报表数据 JasperPrint jasperPrint = fillReport(fileName, ds, parameters);
//JasperPrintManager.printReport(jasperPrint, false);
//打印 //打印预览,模态框
final JDialog dialog = new JDialog(new JFrame(), "打印预览", true);
//报表视图 ReportViewer jp = new ReportViewer(jasperPrint);
//设置关闭监听
jp.setCloseAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose(); }
});
//获取对话框 内容面板 边框布局居中
dialog.getContentPane().add(jp, BorderLayout.CENTER);
dialog.setSize(850, 600);
//--------+++++++++++++++++关闭时销毁 不知道有没有作用(youyong)+++++++++++++++++++++++++--------
//对话框设置默认关闭选项
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
//adjust调整
adjustToCenter(dialog); dialog.setVisible(true);
} catch (JRException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace(); }
catch (SQLException e) {
e.printStackTrace(); } }
//默认打印机
public static boolean printStart(String fileName, Map parameters, TableModel model) {
try {
JRTableModelDataSource ds = new JRTableModelDataSource(model);
JasperPrint jasperPrint = fillReport(fileName, ds, parameters);
JasperPrintManager.printReport(jasperPrint, false);//打印
// //预览
// final JDialog dialog = new JDialog(new JFrame(),"列印預覽", true);
// ReportViewer jp = new ReportViewer(jasperPrint);
// jp.setCloseAction(new ActionListener(){
// public void actionPerformed(ActionEvent e) {
// dialog.dispose();
// }
// });
//
// dialog.getContentPane().add(jp, BorderLayout.CENTER);
// dialog.setSize(850, 600);
// //--------+++++++++++++++++关闭时销毁 不知道有没有作用(youyong)+++++++++++++++++++++++++--------
// dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// adjustToCenter(dialog); //SwingUtils.
// dialog.setVisible(true);
return true;
} catch (JRException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}