Java开发报表怎么做?这2类提高效率的工具,你得试试

createh55个月前 (02-01)技术教程64

日常工作中可能经常会涉及到用java开发报表,需求比较多的就是表格类的报表导出,单元格合并,图表的展现。具体怎么实现,分表格和图表两类来说。

1、表格类

通常采用的方式是“Java+POI+Excel模板”来制作简单的报表,生成Excel。

其实Java中实现Excel根据模板导出数据的方法有很多,一般简单的可以通过操作pol进行。还可以使用一些工具很轻松的实现模板导出,这些工具现在还在维护,而且做得比较好的国内的有easypoi,国外的就是jxls了。

如果是要用java开发报表模块和功能,其实可以着重利用jxls框架。

我用jxls也有半年时间了,半年前因项目原因需要导出大量的excel文件,所以找到了jxls,基本可以完全满足所有的项目需要。不使用easypoi的原因是那时候测试时候效果不是很好,项目中有很多复杂的报表(大量单元格合并和单元格样式),easypoi处理合并单元格时候容易出现残损的情况。

而且pol、jxl代码工作量大,编码效率很低且不方便维护。Jxls的话相对简单轻量,使用特定的标记在excel模板文件中来定义输出格式和布局。

jxls是通过预制excel模板,然后通过jxls响应API将我们应用程序的数据结合模板格式输出到相应的excel文件中,从而形成报表。

报表的其他需求还有很多,比如前端查询,相关的组件很多,原理无非就是选择你所关注的信息(数据列),选择时间等(查询条件)生成数据集,然后在servlet中将数据集转成报表组件所需要的格式,传送到前台渲染。

2、图表类

涉及到报表的图表开发,就是饼图、柱状图那些,可以用echarts还有highchart。

这里要注意,如果是做web端的图表,不要使用java层的组件,使用js层的组件,因为java层的组件生成的是图片,而js是生成的web代码,如果有交互性的功能和动态功能,java层的组件是难以实现的,同时在java层构造图片也是比较严重消耗服务器性能的。

推荐使用js层图表组件库,常用的有echarts和国外的知名组件highchart,因为是js组件库,服务端只用推送数据到客户端,有js来绘制图层,因此不需要写文件下载的模块。

这里总结一些报表开发常用的开源组件库吧:

  • Java office、pdf 操作组件库
  • Apache POI
  • JXL
  • iText
  • OpenOffice
  • PDFBox
  • jquery.table2excel.js

图表前端

  • ECharts
  • Highcharts
  • D3

后面我就不用java开发报表了,因为报表需求量大,以往的大量报表还要维护,然后还有各种复杂的表格形式难以捉摸容易出bug,所以后面就直接用专业的报表工具。

像报表导出,图表制作,开发少说2天,如果用报表工具基本上分分钟的事。哎,能有现成工具真的不要花时间和人力去开发应用来解决问题。

报表工具github是哪个有开源的,之前我们用过jaspereport一阵,好处就不多说了,网上一搜一大把。但是打印报表、复杂的数据计算有点鸡肋,加之我们要和很多应用系统做集成,报表工具要成为一个数据中台的角色,来集中开发个业务的报表,后面还是采购了FineReport。

我也算是亲身经历过从“开发——开源——商用报表工具”的人了。

Java开发报表工具——FineReport

如果有报表开发需求,没有开发能力,但有预算,采购工具是常用的手段,而且一步到位。工具的成本不比人力低?我们以前一个报表开发团队:4个程序员+6个excel做表。报表项目落地后,直接减半,当然工作量也更大了。

FineReport的话,简单介绍一下吧。

功能比较丰富,除了基础的数据展现、填报功能外,还支持定时推送,多级上报,打印导出,移动端,大屏展现等各种场景,俨然是个系统了。

学习成本低,只要学会简单的sql就可以开发,我当年java开发报表的技能早还给百度了。

开发速度快,可视化SQL取数,报表页面设计类似Excel、参数查询可批量查询并导出报表。

(此处已添加小程序,请到今日头条客户端查看)

填报功能是用的很多的,因为业务上要采集很多数据,开发填报模板后数据直接入库,而是每天邮箱里躺着几十份Excel文件。

以前一张报表我们排需求再制作基本要一周,用FineReport的话,只要配置好数据,1、2个小时。在做项目的时候,可以把一些共性需求的报表做在一个模板里,利用参数查询,批量导出。这种维护的成本也是很低的。

如果要做开发,FineReport也是有接口的,可以根据需求调用相应的接口,用java开发集成定制,或者用js,但和市面上大部分ERP、OA、CRM系统都有了直接的集成。

最后,附一张我最近在做的大屏项目作品吧。


相关文章

java百万千万级别excel导出问题(导出慢和Out Of Memory内存溢出)

目录业务场景原因分析解决思路优化后效果实现代码DEMO业务场景由于很多业务需要导出数据库里的数据,一般我们导出的数据都是要给业务部门看的,他们也会拿到做一些数据统计,所以一般都是给他们导出Excel格...

java bean 一对多,多对一 poi导出excel表格

最近造了个poi导出 excel轮子特点java bean 一对多、多对一关系合并单元行支持图片导出Bean 一对多关系合并行代码public class User { @Excel(nam...

用的处理excel导入导出的Java类库和工具包有哪些

常用的处理excel导入导出的Java类库和工具包有以下几种:Apache POI:一款流行的用于读写Microsoft Office格式文件的Java库。它能够读写Excel、Word和PowerP...

hutool导入导出excel,效率飞起来,拒绝cell填充

Hutool,A set of tools that keep Java sweet近几年来,很多人吹捧hutool工具类库,github上star数目更是达到了惊人的18.2K,那为什么会受到大家的...

Springboot+Easyexcel将数据写入模板文件并导出Excel

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有...

若依二开:导出功能改造,让导出EXCEL 更灵活方便

最近因为交付项目忙起来没有时间更新头条,刚好项目中有导出功能。于是马上就答应客户绝对没有问题,因为心里想这功能若依框架里面不是已经做了吗,直接用不就完了,还能有啥工作量,心里暗暗自喜。但是在真正使用的...