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

createh54周前 (02-01)技术教程14

日常工作中可能经常会涉及到用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导出功能?

Java作为一种常用的编程语言,在实现大量数据导出功能时具有很高的效率和可扩展性。本文将介绍如何使用Java实现百万数据的Excel导出功能。一、需求分析在很多实际应用场景中,我们需要将大量数据导出到...

盘点三种Excel转SHP文件的方法(附练习数据下载)

概述数据的获取渠道是多种多样的,获取的数据格式也是多种多样,作为一名GISer,需要熟练掌握各种格式的数据之间的转换,例如本文要介绍的Excel格式的数据,经常会遇到,如果需要转换为SHP格式应该怎么...

程序员:超级简单导出Excel 工具,Hutool Java工具类库

前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。今天给大家介绍一款新工具,java工具类库H...

【Java技巧】高效数据传输:Java通过绑定快速将数据导出至Excel

前言把数据导出至 Excel 是很常见的需求,而数据的持久化,往往又放在数据库中。因此把数据库中的数据导出到 Excel中,成了非常普遍的一个需求。以关系型数据库为例,数据表是一个二维矩阵,但是为了易...

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

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

如何在SpringBoot中实现Excel数据导出功能?

在一些企业级的应用中,对于数据导出成Excel表格的需求是一个非常常见的需求,在SpringBoot中,我们可以借助于Apache POI库来实现这个需求,下面我们就来详细介绍一下如何在Spring...