文章目录
前言
这是一个提供后台数据导出的方案。
在我们业务场景的时候,需要对于一些订单数据或者操作记录等中台展示的数据导出给到业务。
主要的话可以有这么几种方法:
- 通过GET方法使用流的方式导出到前端
- 通过OSS存储文件,给出文件路径提供下载。OSS也可以换成腾讯的COS,同理。
主要的流程就是,
- 组装数据
- 创建文件(excel表格数据(xls) or 纯文本形式存储表格数据(csv))。
- 导出数据。
操作
文件流式
TIPS: 通过设定get请求,在入参设定给定HttpServletResponse
1. 设定请求
文件流式的导出需要将流添加到响应体中,POST
请求笔者目前无法拿出响应体,所以需要的是设定GET
请求。
2. 组装数据
通过请求携带的参数通过查询接口获取到集合数据。通常的场景都是分页查询的中台接口,所以在获取数据的时候记得分页参数的设定,
3. 创建文件导出数据
Excel文件
POI
poi是直接设定工作簿,sheet页,然后添加边框和数据等方式去添加成xls
文件。然后加到响应里面。
Easy Excel
Easy Excel 的所用代码量会更少,主要是通过对于数据定义成类,通过注解去定义行字段定义
。然后写进响应里面。
导出方法:
如果想要导出到本地目录的话可以指定文件流地址。
效果:
纯文本格式数据
csv:格式的表格主要是需要通过设定每行一个特定名,与数据类一一对应上,然后去生成文件。如果给定的行名在数据类里面找不到,那么这一行会为空。
这个方法会没有表头,如果想要设定表头,可以使数据类全部属性都为String
,然后再数据集合最前面手动添加一行表头数据。
csv
效果:
B列式因为aaa
在数据类里面找不到,数据类是userPhone
,所以没有。相同才会导出。
导出方法:
Tips:
同理,如果想要把csv文件以流的方式给出去,可以把csvMapper.writeValues
的file
替换成ServletOutputStream