流行的報表生成工具-JXLS
阿新 • • 發佈:2018-11-23
如果你還在為靈活的生成各種複雜報表犯愁,在為常用報表工具消耗大量記憶體擔心。我推薦一個很好用的開源的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
下面重點介紹下我實現的這個工具,希望能幫助到大家:
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 "[email protected];[email protected]" java -jar db_report.jar -q member:會員資訊:"select * from member" -q order_db:訂單資訊:"select * from orders" -o "/tmp/db-report/output/memberOrders.xlsx" -mailto "[email protected]" 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 "[email protected]" 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 [email protected]" 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 "[email protected]"