实践一下JasperReports 的入门摸索(一)

Aspose Total for JasperReports
placeholder image
admin 发布于:2026-07-11 21:17:05
阅读:loading

从业这么多年以来,还未使用过“JasperReports”这款软件产品,本次为了摸索一下“Aspose.Total for JasperReports”的相关示例,不得不先粗线的学习了一下,特整理分享一下我所掌握的知识细节。

1.基本介绍

JasperReports是一款开源的Java报表生成工具,由Jaspersoft公司开发。它广泛应用于企业级应用中,用于设计、生成和展示各种复杂的报表。JasperReports支持多种数据源,包括数据库、XML、CSV等,能够输出多种格式的报表,如PDF、Excel、HTML等。官网有更多更细致更全面更专业的介绍,本次的实践目的只期望花更少的时间能有一个入门级的实践案例即可,真心不愿意花费太多的时间。

官网地址:https://community.jaspersoft.com/

Github地址:https://github.com/topics/jasperreports

Github上的项目代码当前最新的版本为7.0,项目主页也存在各个版本的分支版本代码,可以按需要进行有选择的对应版本的功能示例实践,同时代码案例也非常的多。

2.实践代码

Github上的示例有相当多,最终在`6.16.0`版本的基础上选用了“CsvDataSource”示例,从一个CSV文件中读取数据,利用模板生成多种格式报表文件的实现。不多废话(懒得写了),详细如下文所述。

public JasperPrint init() throws Exception {

    Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put("ReportTitle", "Address Report");
    parameters.put("DataFile", "CsvDataSource.txt - CSV data source");
    Set<String> states = new HashSet<String>();
    states.add("Active");
    states.add("Trial");
    parameters.put("IncludedStates", states);

    String[] columnNames = new String[]{"city", "id", "name", "address", "state"};
    JRCsvDataSource dataSource = new JRCsvDataSource(JRLoader.getLocationInputStream("CsvDataSource.txt"));
    dataSource.setRecordDelimiter("\r\n");
    //dataSource.setUseFirstRowAsHeader(true);
    dataSource.setColumnNames(columnNames);

    JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("/reports/CsvDataSourceReport-6.16.0.jrxml"));
    final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
    // 添加调试信息
    System.out.println("报表总页数: " + jasperPrint.getPages().size());
    System.out.println("每页高度: " + jasperPrint.getPageHeight());
    return jasperPrint;
}

@Test
public void toHtml() throws Exception {
    JasperPrint jasperPrint = this.init();
    HtmlExporter exporter = new HtmlExporter();
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    exporter.setExporterOutput(new SimpleHtmlExporterOutput(new File("output/CsvDataSourceReport.html")));
    exporter.exportReport();

}

@Test
public void toPptx() throws Exception {
    JRPptxExporter exporter = new JRPptxExporter();
    exporter.setExporterInput(new SimpleExporterInput(this.init()));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("output/CsvDataSourceReport.pptx")));
    exporter.exportReport();
}

@Test
public void toXlsx() throws Exception {
    JRXlsxExporter exporter = new JRXlsxExporter();
    exporter.setExporterInput(new SimpleExporterInput(this.init()));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("output/CsvDataSourceReport.xlsx")));
    SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
    configuration.setOnePagePerSheet(false);
    exporter.setConfiguration(configuration);
    exporter.exportReport();
}

@Test
public void toDocx() throws Exception {
    JRDocxExporter exporter = new JRDocxExporter();
    exporter.setExporterInput(new SimpleExporterInput(this.init()));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("output/CsvDataSourceReport.docx")));
    exporter.exportReport();
}

@Test
public void toPdf() throws Exception {
    JasperExportManager.exportReportToPdfFile(this.init(), "output/CsvDataSourceReport.pdf");
}

3.生成文档

image.png

《CsvDataSourceReport.html》

image.png

《CsvDataSourceReport.pdf》

image.png

《CsvDataSourceReport.pptx》

image.png

《CsvDataSourceReport.xlsx》

image.png

《CsvDataSourceReport.docx》

4.其它说明

(1)本例实践了利用Jasperreports的jrxml模板将CSV文件的数据导出为更多格式的报表实现,包含html、pdf、pptx、xlsx、docx等多种格式;

(2)Github上包含了众多个Jasperreports版本的代码及示例,本例采用的6.16.0的版本实现;

(3)相关导出文件和参考代码见《示例下载.zip》;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区