zoukankan      html  css  js  c++  java
  • 流行的报表生成工具-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"
  • 相关阅读:
    我终于会手打lct了!
    [模板]Dijkstra-优先队列优化-单源最短路
    99999999海岛帝国后传:算法大会
    正在加载中。。。。。
    【题解】CF1054D Changing Array(异或,贪心)
    【题解】P4550 收集邮票(概率期望,平方期望)
    【题解】CF149D Coloring Brackets(区间 DP,记忆化搜索)
    【笔记】斜率优化 DP
    CSP2021 游记
    【题解】洛谷P1502 窗口的星星
  • 原文地址:https://www.cnblogs.com/barrywxx/p/10009957.html
Copyright © 2011-2022 走看看