我看到有一个Scala wrapper for JasperReports,我找到了Clojure library for Scala interoperability,以及初学者a snippet的from this discussion示例代码但我无法做到找到Jasper或DynamicJasper的任何库或工作示例代码。我以为我以前找过一个图书馆或文章。任何提示?
问题是JasperReports API非常混乱(以突变为中心),所以我不想从头开始编写包装代码。
答案 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")
我希望这可以帮助你开始。