在IT领域,特别是报表设计与生成方面,iReport与JasperReports是被广泛使用的工具,它们提供了强大的功能来创建各种格式的报表,包括HTML、Excel(XLS)和PDF。以下是从给定文件中提取的关键知识点,深入解析了如何利用iReport与JasperReports生成这些不同格式的报表。 ### iReport生成报表的基础 iReport是一个图形界面的设计工具,用于创建JasperReports报表模板。通过iReport,用户可以设计复杂的报表布局,添加文本、图像、图表等元素,并定义数据来源和参数。一旦设计完成,iReport会将模板保存为.jrxml文件,这是JasperReports能够识别并填充数据的格式。 ### 使用JasperReports填充数据并生成报表 #### 数据源设置:JRBeanCollectionDataSource 在生成报表之前,首先需要准备数据源。在示例代码中,使用`JRBeanCollectionDataSource`作为数据源,它接受一个Java List对象,该对象包含将要在报表中显示的数据记录。例如: ```java List<Customer> list = this.customerDao.getAllCustomer(); JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list); ``` 这里,`getAllCustomer()`方法应该是从数据库或其他数据存储中检索客户数据的DAO(Data Access Object)方法。 #### 填充报表:JasperFillManager 使用`JasperFillManager`类的`fillReport`方法来填充报表模板。此方法需要三个参数:报表模板文件路径、参数映射和数据源。例如: ```java Map parameters = new HashMap(); parameters.put("ReportTitle", reportTitle); JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds); ``` `parameters`映射允许向报表传递额外的信息,如报告标题等,这些信息可以在报表模板中使用。 ### 生成PDF报表 生成PDF报表涉及使用`JasperExportManager`的`exportReportToPdf`方法。此方法接收一个`JasperPrint`对象并返回一个包含PDF格式报表的字节数组。例如: ```java byte[] pdfBytes = JasperExportManager.exportReportToPdf(jasperPrint); ``` ### 生成HTML报表 生成HTML报表则需要使用`JRHtmlExporter`类。这个类允许将`JasperPrint`对象导出为HTML格式。以下是一个生成HTML报表的例子: ```java JRHtmlExporter exporter = new JRHtmlExporter(); ByteArrayOutputStream oStream = new ByteArrayOutputStream(); exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK"); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream); exporter.exportReport(); byte[] htmlBytes = oStream.toByteArray(); ``` 注意,`JRHtmlExporter`提供了多个参数,如字符编码、输出流等,以便更好地控制导出过程。 ### 生成Excel报表 生成Excel报表的过程与生成HTML和PDF类似,但需要使用不同的导出器。对于XLS格式,通常使用`JRXlsExporter`。以下是一个示例代码片段,展示如何使用`JRXlsExporter`导出Excel报表: ```java JRXlsExporter xlsExporter = new JRXlsExporter(); xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream); xlsExporter.exportReport(); byte[] xlsBytes = oStream.toByteArray(); ``` ### 总结 通过上述示例代码和解释,我们可以看到,使用iReport和JasperReports生成HTML、Excel和PDF格式的报表是一个相对直接的过程,涉及到设置数据源、填充报表模板、以及使用适当的导出器来生成所需的输出格式。理解这些基本步骤,开发人员就可以灵活地根据项目需求生成各种类型的报表,满足业务分析和报告的需求。
List list=this.customerDao.getAllCustomer(); //得到所有客户
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
JasperPrint jasperPrint = JasperFillManager.fillReport(
reportFilePath, parameters, ds);
得填充数据后,即可输出显示到PDF,Excel,Html
到PDF:
public byte[] generatePDF(String begCustNo, String endCustNo,
String reportTitle, String reportFilePath) throws DemoException {
// TODO Auto-generated method stub
//begCustNo,endCustNo分别为查询传入的开始编号,结束编号.
jdbcCustomerDao = new JdbcCustomerDao();
Map parameters = new HashMap();
parameters.put("ReportTitle", reportTitle);//报表标题
List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
JasperPrint jasperPrint = JasperFillManager.fillReport(
reportFilePath, parameters, ds); return JasperExportManager.exportReportToPdf(jasperPrint);
} catch (JRException e) {
throw new DemoException("Report Export Failed.");
}
}
到Html:
public byte[] generateHtml(String begCustNo, String endCustNo,
String reportTitle, String reportFilePath) throws DemoException {
jdbcCustomerDao = new JdbcCustomerDao();
Map parameters = new HashMap();
parameters.put("ReportTitle", reportTitle);
List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 非常好的语音识别源代码100%好用.zip
- 0积分【尊重互联网共享原则】tauri2.0所需插件nsis-tauri-utils.dll
- 基于CNN+LSTM实现的网络流量检测系统python源码(高分课设)+文档说明
- PHP中把动态页面生成静态页面的示例
- 0积分【尊重互联网共享原则】tauri2.0所需插件nsis-3.zip
- 【java毕业设计】食物营养分析与推荐网站的设计与实现源码(springboot+vue+mysql+说明文档+LW).zip
- AI-WB2-01S Combo模组AT指令手册详述
- 【java毕业设计】社区居民诊疗健康管理系统设计与实现源码(springboot+vue+mysql+说明文档+LW).zip
- 免费资源第一弹:关系型数据库-第一节
- 基于代码生成器的低代码开发平台 可以应用在任何J2EE项目的开发中,支持信创国产化 尤其适合SAAS项目、企业信息管理系统(MI