流行的報表生成工具-JXLS


如果你還在為靈活的生成各種復雜報表犯愁,在為常用報表工具消耗大量內存擔心。我推薦一個很好用的開源的Java報表生成工具。

本工具封裝了強大的POI。但與POI不同的是,它可以用很簡潔的代碼生成復查的,各種功能的報表。

官網地址:http://jxls.sourceforge.net/index.html

應用實例Java實現:https://gitee.com/barrywang/jxls-demo

自己基於JXLS實現了一套萬能的報表工具(Scala語言實現,推薦學習,比Java強很多,支持函數式編程):

源碼:

碼雲:https://gitee.com/barrywang/db-report

github:https://github.com/barrywang88/db-report

下面重點介紹下我實現的這個工具,希望能幫助到大家:

1.1 部署目錄結構說明

 /tmp/finance/db-report
 |   db_report.jar                           --報表工具可運行Jar
 +---config
 |       config.conf                         --數據庫配置文件
 +---logs
 |   \---db-report
 |           detail-db-report.2018-06-29.log --工具日志
 +---output
 |       20180629104146invoice-store.xlsx    --報表輸出目錄
 \---report
     +---runscript                           --shell啟動工具腳本
     |   +---inventory-stock
     |   |       genInventoryStockReport.sh
     |   +---invoice-logistics
     |   |       genInvoiceReport.sh
     \---template                           --報表Excel模板
             check_account_template.xls
             invoice_line_template.xls
     \---scala-script                       --Scala腳本
             getMemberInfo.sc

1.2 啟動參數及說明

 -q (-query) <db>:<objectName>:<sql>             : 數據庫:對象名:查詢SQL腳本,中間用英文分號“:”隔開, 請避免SQL中使用英文":"。
                                                   其中若傳入模板時,對象名代表模板內EL表達式的key值。若不傳入模板,對象名就是生成Excel當前sheet的名稱。
                                                   可以傳入多個-q (-query) <db>:<objectName>:<sql>組合, 多個會分別生成報表的多個sheet中。(String)
 -s (-script) <scalaScript;paramName:paramValue> : Scala腳本文件, 請返回一個Scala Map[String, AnyRef]。如果scala腳本需要傳入參數, 請腳本后加分號";", 再加參數名:參數值。
                                                   Scala腳本請參考:http://ammonite.io/#ScalaScripts。(String)
 -t (-template) <template file>                  : JXLS Excel模板文件絕對路徑, 請參考:http://jxls.sourceforge.net/reference/simple_exporter.html。(File)
 -o (-output) <output excel file>                : 輸出Excel文件絕對路徑。(File)
 -m (-mailto) <email>                            : 生成報表發送郵箱,多個使用英文分號“;”分割。(String)
 -sub (-subject) <subject>                       : 郵件主題。(String)

1.3 命令舉例

 1.3.1 根據SQL生成報表
        java -jar db_report.jar -q member:會員信息:"select * from member" -o "/tmp/db-report/output/member.xlsx" -mailto "XXX@qq.com;YYY@qq.com"
        java -jar db_report.jar -q member:會員信息:"select * from member" -q order_db:訂單信息:"select * from orders" -o "/tmp/db-report/output/memberOrders.xlsx" -mailto "XXX@qq.com"
 1.3.2 根據SQL+模板生成報表
        java -jar db_report.jar -q member:members:"select * from member" -t "/tmp/db-report/report/template/member-template.xls" -o "/tmp/db-report/output/member.xlsx" -mailto "XXX@qq.com"
 1.3.3 根據Scala腳本+模板生成報表
        java -jar db_report.jar -q -s "/tmp/db-report/report/scala-script/getMemberInfo.sc" -t "/tmp/db-report/report/template/member-template.xls" -o "/tmp/db-report/output/member.xlsx" -"mailto XXX@qq.com"
 1.3.4 根據SQL+Scala腳本+模板生成報表
        java -jar db_report.jar -q -q member:members:"select * from member" -s "/tmp/db-report/report/scala-script/getMemberInfo.sc" -t "/tmp/db-report/report/template/member-template.xls" -o "/tmp/db-report/output/member.xlsx" -mailto "XXX@qq.com"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM