因参与公司南非的项目,需要应用在Linux平台,所以报表改用JasperReport.国内的项目报表还是用FastReport(看来还是结晶啊).
废话少说,我从delphi平台转到RCP开发才不过两月时间,以前从未接触过JasperReport.(简称为JR)
今天上级要求熟悉JR,为节后国际化报表做准备.以下为我从0开始的一些记录.
目的: 力求理解JasterReport的各个概念及之间的关系.熟悉打印报表流程的来龙去脉,主要的调用方法(如加载报表,打印,预览).
报表设计器的使用.
1. IReport 设计器,就像FastReport一样有这样的设计器.但名字叫IReprot,为安装文件,我安装的版本为
iReport-3.0.0-windows-installer.exe,同事传我的,下载地址百度下下就有了.
2. JasperReport为一个开发Jar包,就是相当于FastReport的报表控件.
3. 初始化JasterReportprivate static JasperPrint initJasperReport(String fileName,
Map<String, Object> paramMap,
List data) throws IOException,
MalformedURLException, JRException {
...
InputStream is = fullPathString.toURL().openStream(); //这句以上代码都是处理报表文件路径
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
Object[] objArray =
data.toArray();
//
JasperReport对象 + Map对象 + List 对象 =
JasperPrint对象
final
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport, paramMap, new JRBeanArrayDataSource(objArray));
return jasperPrint;
}
4.查找默认打印机(打印服务).public static boolean directPrintByPrintName(final JasperPrint jasperPrint) {
if (jasperPrint != null) {
try {
PrintService[] PSs = PrinterJob.lookupPrintServices(); //java.awt.*包.查找所有打印服务.
PrintService ps = null;
if (PSs != null && PSs.length > 1&& !Assert.isNull(MzTransParam.PrinterOfSyddyj)) {
for (int i = 0; i < PSs.length; i++) {
String sps = PSs[i].toString();
sps = sps.replace("Win32 Printer : ", ""); //$NON-NLS-1$ //$NON-NLS-2$
//MzTransParam.PrinterOfSyddyj 我们系统设置的默认打印机名称.
if (sps.equalsIgnoreCase(MzTransParam.PrinterOfSyddyj)) {
ps = PSs[i];//得到打印服务对象
break;
}
}
}
5.设置打印参数,好多个参数 if (ps != null) {
long start = System.currentTimeMillis();
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
printRequestAttributeSet.add(MediaSizeName.ISO_A5);// 处方模板是A5纸 第一个参数对象
PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
printServiceAttributeSet.add(new PrinterName(ps.getName(),null)); //第二个参数对象
final
JRPrintServiceExporter exporter = new JRPrintServiceExporter(); //关键的对象,其它的对象都是为他服务的
//以下为设置参数
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,
printRequestAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
printServiceAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,
Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,
Boolean.FALSE);
6.关键的出场,在线程里导出报表.(打印) Thread thread = new Thread(new Runnable() {
public void run() {
try {
exporter.exportReport(); //就这么一句.exporter对象导出报表.
} catch (Exception ex) {
System.err.println(ex.getLocalizedMessage());
}
}
});
thread.start();
7.采用默认打印. } else { //此处的else接的是5条的if
Thread thread = new Thread(new Runnable() {
public void run() {
try {
//jasperPrint 对象就是JasperPrintManager生成的.参考上面的代码.
JasperPrintManager.printReport(jasperPrint,false); //这一句应该是默认打印.
} catch (Exception ex) {
}
}
});
thread.start();
}
} catch (Exception ex) {
return false;
}
}
return true;}
分享到:
相关推荐
其次,《iReport简单教程》则更加注重实践和快速上手,它可能包含了一系列逐步的教学步骤,教你如何从零开始创建一个简单的报表,包括导入数据源、设计报表布局、添加计算和过滤条件等。通过这个教程,初学者可以...
总的来说,"整合Struts2.1+jasperreport"项目提供了一个完整的工程实例,使得开发者可以直接导入并运行,无需从零开始配置。这对于初学者或者需要快速开发报表功能的开发者来说非常方便。通过学习这个项目,你可以...
通过观看此视频,学习者可以期望了解从零开始创建报表的步骤,包括定义数据源、设计报表布局、添加各种报表元素以及最终导出为PDF格式的过程。 【标签】:“ireport,jasperreport” ireport是JasperReports ...
虽然网络上有不少关于 iReport 和 JasperReport 的资料,但鲜有文献能够全面地指导初学者如何从零开始制作报表。本章节将重点放在 iReport 的实际操作流程上,以满足那些希望直接获得实践经验的读者需求。 ##### ...
本文档将逐步引导你从零开始掌握iReport,无论是简单的表格还是复杂的多页报表,都能轻松应对。通过深入学习,你将能够充分利用iReport的强大功能,为你的应用构建出专业且美观的报表。同时,不要忘记利用iReport...
本章节将从零开始,逐步介绍如何在Windows环境下使用iReport完成报表的设计与制作。 ##### 2.2 准备工作 **2.2.1 下载并安装JDK** - **下载地址**:访问[Sun官方网站]...
- 通过例子展示如何从零开始创建一个简单的报表。 - 针对中国用户的常见问题解答和注意事项。 - 对比JasperReports与其它报表工具的优势和适用场景。 通过这些资源,你可以系统地学习JasperReports的各个方面,...
这个压缩包提供了一套源代码,使得开发者能够快速集成报表打印功能到自己的项目中,无需从零开始编写复杂的打印逻辑。下面将详细阐述Java报表打印的关键知识点。 1. **Java Print Service API**:Java平台标准版...
- **知识点**:从零基础开始,逐步介绍了Java的学习路径和要点。 13. **CSDN 论坛 - Java 常见问题解答** - [http://bbs.csdn.net/topics/391841596](http://bbs.csdn.net/topics/391841596) - **知识点**:这个...