美文网首页
浅谈导出Execl的报表数据解决方案

浅谈导出Execl的报表数据解决方案

作者: BUG弄潮儿 | 来源:发表于2021-02-20 12:26 被阅读0次

项目中免不了要做一些数据导出功能,比如导出前一天的订单记录。涉及导出功能可大可小,根据系统具体的用户量、一天的订单量等情况。今天就讨论一下怎么设计一个合理的导出功能。

0x01:同步导出

这个方案最简单,就只需一个导出接口。这个接口只需实现根据用户条件到数据库查询相关数据,然后在应用程序中生成Execl电子表格,最后通过Response把生成的Execl电子表格回写到客户端即可

image.png

该方案简单,因为是同步导出,所以不适用大量数据导出。如果使用该方案进行大量数据导出的话,存在客户端(浏览器)超时的情况,导致导出失败;因为浏览器与Nginx之间有超时设置。

0x02:异步导出

异步导出一般需要设计三个接口。

第一个接口:开启一个线程对进行数据查询,并对查询到的数据进行Execl电子表格读写操作,同步返回导出状态标识;
第二个接口:查询第一个接口的完成状态,如果完成Execl电子表格操作,则返回true;否则返回false;
第三个接口:根据第二个接口返回的状态,如果返回true,就调用下载Execl电子表格;否则返回false的话继续轮询调用第二个接口,直到返回true;

image.png

这种方案比较耗服务器性能,因为需要第二个接口轮询应用服务器的导出状态,设置一个比较合理的轮询周期显得非常必要。另外,第一种方案和第二种方案都没有对导出的结果进行存库记录,如果要下载同样的数据,要整个流程重新走一遍。这样的话就引出第三种方案。

0x03:导出服务

该方案需要一张表和两个接口。

表的作用是用来存储谁进行了数据导出,导出的电子表格Execl存放的硬盘目录
第一个接口:开启一个线程对进行数据查询,并对查询到的数据进行Execl电子表格读写操作,最后把电子表格的目录存储到数据库;同步返回成功;
第二个接口:在导出列表中找出导出的记录,然后调用该接口进行Execl电子表格下载;

image.png

该方案需要额外做一个管理下载记录的界面,进行下载管理;这个方案的最大好处就是对下载操作进行了记录。如果需要对相同的数据导出,只需导出一遍即可。不过增加了存储的空间,无论数据库还是硬盘,都增加了。

在实际项目中使用哪种方案,根据具体业务场景,具体选择即可。其他文件类型的导出方案也可以参考该文章的方案进行操作。

相关文章

  • 浅谈导出Execl的报表数据解决方案

    项目中免不了要做一些数据导出功能,比如导出前一天的订单记录。涉及导出功能可大可小,根据系统具体的用户量、一天的订单...

  • js导出execl

    背景 起初的需求是这样的,有一批报表(纯手工写的那种),需要execl导出的功能,之前的导出,都是用poi写的,由...

  • Unity技术沉淀--读取json数据(反序列化)

    上一节讲到了如何借助第三方工具从excel数据表中导出json数据。Execl表格导出json、lua[https...

  • 怎样用TimeTrack数据制作月报(Excel实例)

    以“月”为单位来制作报表,相比“周报表”引用的导出数据区域是“明细数据”。 导出明细数据后,把明细数据粘贴到Exc...

  • 关于数据导出超时的问题

    实际工作中,我们经常导出报表的需求,当导出数据量过大的时候,经常会遇到超时和内存溢出的问题。 解决方案一 超时可用...

  • 报表批量导出excel

    需求:多个皕杰报表展示信息导出到一个excel文件夹中。 解决方案: 在皕杰报表演示实例5.2提供了批量导出实例(...

  • 工作中遇到的问题

    1.报表导出过慢的问题:在一次报表导出数据的过程中,随着业务量的增加,导出一个报表的时间过长,达到了2至3s钟,业...

  • Java ThreadLocal 妙用

    前言 最近公司需要做一个功能:导出报表的数据到 Excel 中,要求按报表内容分多个 sheet 导出;我用开源的...

  • Mysql文件导出和导入into outfile(),load_

    我们经常有从数据库导出数据的需求,比如:导出当天新增用户数据,导出数据报表等。 其中比较常用的函数有以下三个: i...

  • 深入了解数据导入的一些解决方案

    项目中除了有数据导出之外,也存在批量数据导入的场景。比如通过Execl电子表格进行批量开卡,批量导入用户或者部门信...

网友评论

      本文标题:浅谈导出Execl的报表数据解决方案

      本文链接:https://www.haomeiwen.com/subject/zfbtfltx.html