如果你还在为灵活的生成各种复杂报表犯愁,在为常用报表工具消耗大量内存担心。我推荐一个很好用的开源的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"

流行的报表生成工具-JXLS的更多相关文章

  1. 流行JAVA开发工具

    流行JAVA开发工具 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,本文为大家推荐以下下几款java开发工具: Eclipse(推荐):另 ...

  2. linux系统下使用流行的版本管理工具 Git

    前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...

  3. 报表生成工具 —— iText

    十二月份一直在做生成报表的功能,中间踩了不少坑,刚好今天有时间,写篇博客记录一下. 一.iText 简介 iText 是著名开放源码站点 sourceforge 的一个项目,是一个用于生成 PDF 文 ...

  4. 报表生成工具ireport

    最近又开始学习新的玩意儿了,扒拉扒拉网上的资源,先捣鼓个思维导图.

  5. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?

    0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...

  6. 推荐6款常用的Java开源报表制作工具

    JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表.JasperReports 支持PDF.HTML.XLS.CSV和XML文件输出格 ...

  7. java通过jxls框架实现导入导出excel

    //使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...

  8. 专业上的常用的工具和类库集 By 老衣

    Visual Studio 2013 扩展 CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式.并在开发时实时提供代码复杂度的报告,以便帮助开发人员降低代码复杂度.提高代码质量. C ...

  9. 性能测试工具 转自https://yq.aliyun.com/articles/35149?spm=5176.100239.blogcont35147.8.rsow6k

    摘要: 继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具.在此之前,我已经对性能测试工具的原理与架构做了分析. http://www.cnblogs.com/fnng ...

随机推荐

  1. 开启irqbalance提升服务器性能

    操作系统 性能调休   公司有次压测存在一个问题:CPU资源压不上去,一直在40%已达到了性能瓶颈,后定位到原因,所在的服务器在压测过程中产生的中断都落在CPU0上处理,这种中断并没有均衡到各个CPU ...

  2. Android 沉浸式状态栏攻略 让你的状态栏变色吧

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/48649563: 本文出自:[张鸿洋的博客] 一.概述 近期注意到QQ新版使用了 ...

  3. Mac下安装git

    gti下载地址 https://git-scm.com/downloads 一步一步来就完事了.安装完以后执行 git version 查看是否更新到了该版本

  4. 【卡特兰数】BZOJ1485: [HNOI2009]有趣的数列

    Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...

  5. linux 搜索某个系统命令的位置

    Which命令 功能简述which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果.也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置 ...

  6. 用PCA(主成分分析法)进行信号滤波

    用PCA(主成分分析法)进行信号滤波 此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档 现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波.网上 ...

  7. [CTF隐写]png中CRC检验错误的分析

    [CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...

  8. 影响HTTP性能的常见因素

    影响HTTP性能的常见因素 我们这里讨论HTTP性能是建立在一个最简单模型之上就是单台服务器的HTTP性能,当然对于大规模负载均衡集群也适用毕竟这种集群也是由多个HTTTP服务器的个体所组成.另外我们 ...

  9. AI - TensorFlow - 示例03:基本回归

    基本回归 回归(Regression):https://www.tensorflow.org/tutorials/keras/basic_regression 主要步骤:数据部分 获取数据(Get t ...

  10. 运用《深入理解Java虚拟机》书中知识解决实际问题

    前言 以前看别人博客说看完<深入理解Java虚拟机>这本书并没有让自己的编程水平提高多少,不过却大大提高了自己的装逼水平.其实,我倒不这么认为,至少在我看完一遍这本书后,有一种醍醐灌顶的感 ...