有没有一种简单的方法可以使用Clojure的JasperReports?

时间:2015-03-25 18:28:17

标签: clojure jasper-reports dynamic-jasper

我看到有一个Scala wrapper for JasperReports,我找到了Clojure library for Scala interoperability,以及初学者a snippetfrom this discussion示例代码但我无法做到找到Jasper或DynamicJasper的任何库或工作示例代码。我以为我以前找过一个图书馆或文章。任何提示?

问题是JasperReports API非常混乱(以突变为中心),所以我不想从头开始编写包装代码。

1 个答案:

答案 0 :(得分:1)

这不是一个全面的教程,但有一些关于我如何将JasperReports与JRxml文件和Clojure一起使用的指针。我不知道DynamicJasper。

以下是您需要导入的一些内容。

(ns app.reports
  (:require [clojure.java.io :as io]
            [clojure.string :as s])
  (:import [net.sf.jasperreports.engine
            JasperCompileManager
            JasperFillManager
            JasperPrint
            JasperExportManager
            JREmptyDataSource
            JRExporter
            JRException]))

编译你的jrxml文件:

(def my-report
  (JasperCompileManager/compileReport
    (io/input-stream
      (io/file "my-report.jrxml"))))

将Java HashMap与您传入报告的数据/列一起使用以填充它。

(def report-data
  (java.util.HashMap. {"attrname_1" "Attr 1 String"
                       "attrname_2" "More data..."}))

使用来自来源的数据填写您的报告:

(def filled-report
  (JasperFillManager/fillReport my-report report-data (JREmptyDataSource.)

导出您的报告。以下是如何以PDF格式进行操作。

(JasperExportManager/exportReportToPdfFile filled-report "result.pdf")

我希望这可以帮助你开始。