Java打印报表

1. 简介

在业务系统中,经常需要将数据以报表的形式输出,供用户查看和打印。Java作为一种强大的编程语言,提供了丰富的打印报表的功能和工具。

本文将介绍使用Java打印报表的基本步骤和常用工具,以及通过代码示例演示如何使用Java打印报表。

2. 打印报表的基本步骤

打印报表的基本步骤如下:

  1. 准备数据:从数据库或其他数据源中获取需要打印的数据。
  2. 设计报表:使用报表设计工具设计报表的样式和布局。
  3. 填充数据:将准备好的数据填充到报表中。
  4. 预览报表:在界面上预览报表,确保数据和样式的正确性。
  5. 打印报表:将报表输出到打印机上。

3. 常用的Java打印报表工具

Java提供了多种打印报表的工具,下面介绍两种常用的工具。

3.1 JasperReports

JasperReports是一个开源的报表工具,它采用XML格式定义报表的样式和布局,支持多种数据源和输出格式。使用JasperReports打印报表的步骤如下:

  1. 引入依赖:在项目的pom.xml文件中添加JasperReports的依赖。
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.17.0</version>
</dependency>
  1. 设计报表:使用JasperReports的报表设计工具(如JasperStudio)设计报表的样式和布局,生成.jrxml格式的报表文件。

  2. 编译报表:使用JasperReports提供的API编译.jrxml文件,生成.jasper格式的报表文件。

String jrxmlFile = "path/to/report.jrxml";
JasperReport jasperReport = JasperCompileManager.compileReport(jrxmlFile);
  1. 填充数据:将准备好的数据填充到报表中。
Map<String, Object> parameters = new HashMap<>();
parameters.put("param1", value1);
parameters.put("param2", value2);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
  1. 预览报表:使用JasperReports提供的预览组件预览报表。
JasperViewer.viewReport(jasperPrint);
  1. 打印报表:使用JasperReports提供的打印组件打印报表。
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
PrinterJob printerJob = PrinterJob.getPrinterJob();

if (printerJob.printDialog(printRequestAttributeSet)) {
    printerJob.print(printRequestAttributeSet);
}

3.2 Apache POI

Apache POI是一个开源的Java库,用于操作Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。使用Apache POI打印报表的步骤如下:

  1. 引入依赖:在项目的pom.xml文件中添加Apache POI的依赖。
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
  1. 创建工作簿:使用Apache POI提供的API创建Excel工作簿。
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
  1. 填充数据:将准备好的数据填充到工作簿中。
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
  1. 导出报表:将工作簿导出为Excel文件。
try (FileOutputStream fileOutputStream = new FileOutputStream("path/to/report.xlsx")) {
    workbook.write(fileOutputStream);
}

4. 代码示例

下面通过一个简单的示例演示使用JasperReports和Apache POI打印报表的过程。

4.1 使用JasperReports打印