流行的报表生成工具-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"
流行的报表生成工具-JXLS的更多相关文章
- 流行JAVA开发工具
流行JAVA开发工具 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,本文为大家推荐以下下几款java开发工具: Eclipse(推荐):另 ...
- linux系统下使用流行的版本管理工具 Git
前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...
- 报表生成工具 —— iText
十二月份一直在做生成报表的功能,中间踩了不少坑,刚好今天有时间,写篇博客记录一下. 一.iText 简介 iText 是著名开放源码站点 sourceforge 的一个项目,是一个用于生成 PDF 文 ...
- 报表生成工具ireport
最近又开始学习新的玩意儿了,扒拉扒拉网上的资源,先捣鼓个思维导图.
- 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?
0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...
- 推荐6款常用的Java开源报表制作工具
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表.JasperReports 支持PDF.HTML.XLS.CSV和XML文件输出格 ...
- java通过jxls框架实现导入导出excel
//使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...
- 专业上的常用的工具和类库集 By 老衣
Visual Studio 2013 扩展 CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式.并在开发时实时提供代码复杂度的报告,以便帮助开发人员降低代码复杂度.提高代码质量. C ...
- 性能测试工具 转自https://yq.aliyun.com/articles/35149?spm=5176.100239.blogcont35147.8.rsow6k
摘要: 继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具.在此之前,我已经对性能测试工具的原理与架构做了分析. http://www.cnblogs.com/fnng ...
随机推荐
- c/c++(hiredis)异步调用redis【转】
hiredis是redis官方推荐的C/C++客户端代码库.使用hiredis库很简易方便的进行redis的相关开发. 同步方式 不过大多数情况下,我们采用的都是同步的调用方式. 1 2 3 4 ...
- ORACLE 快速启动监听及相关服务程序
windows7 系统下,鼠标移至任务栏右键启动任务管理器->选择服务->点击右下角服务选项 ->选中名称,键盘输入O(大写),快速找到ORACLE相关服务进程 ->将所有的O ...
- TestNG 自动化测试入门教程--典型示例
TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框架了. Tes ...
- windows部署SpiderKeeper(爬虫监控)
最近发现了一个spdierkeeper的库,这个库的主要用途是在于配合这scrpyd管理你的爬虫,支持一键式部署,定时采集任务,启动,暂停等一系列的操作.简单来说将scrapyd的api进行封装,最大 ...
- SpringCloud实战8-Bus消息总线
好了现在我们接着上一篇的随笔,继续来讲.上一篇我们讲到,我们如果要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠spring cloud config了,但是,是我们要一个服务一个服务的 ...
- 插入排序算法java
转自https://blog.csdn.net/jianyuerensheng/article/details/51254415 1.基本思想 直接插入排序的基本操作是将一个记录插入到已经排好的有序表 ...
- Java同步简介
Java同步 Java中同步一直都是很重要的问题,对于初学者来说也是不太容易能理解的问题.特在此记录一下有关Java中同步和锁的知识.主要涉及到同步的概念以及Java中解决的办法和简单的例子.有关锁L ...
- SpringBoot Web Https 配置
不管是游戏服务器开发,还是其它服务开发,越来越多的平台都要求服务端必须支持https的访问.以增加安全性.比如目前火热的小程序,要求服务端必须支持https,苹果商店也有说http请求要修改为http ...
- java日志文件用法总结
1.基本概念 日志门面(接口):commons logging ; slf4j ; 日志具体实现:log4j ; logback(Spring 系列在使用) ; log4j2(添加了异步logger的 ...
- java 基本类型包装类,system类,Math类,Assrays类,大数据运算
实现字符串与基本数据之间转换 将字符串转成基本数据类型方法 例如:将字符串转成成int类型 String str ="123"; int a =Integer.parseInt(s ...