需求描述:从数据库中导出一张报表,报表的表头比较复杂,给出开始时间和结束时间,导出在这段区间内的所有的数据
原来的代码:自定义工具类,从空白表开始写,定义了一系列的数组表头,然后先写表头,再按条件查询数据写入文件中,直接导出到response的输出流中完成下载。
指出的问题:从头开写太浪费时间了,并且表头的宽度高度颜色等样式比较复杂,会占用大量代码,不如在工程目录下放置一个模板文件,里面只有表头数据,
在每次下载的时候,我们直接复制一份这个文件,用uuid来唯一命名,然后将导出的数据写入到复制的文件中,最后将文件输出到response流中,不要忘记下载之后删除这个文件,以免占用太多空间。
需要特别注意的地方:
一、文件一定要复制一份再做操作并且文件名不能重复,防止并发修改。
二、下载完成之后不要忘记删除文件
三、数据量较大时,应当分页查询写入文件,防止占用内存过多。