Java使用get请求接收List集合数据(json)并导出报表
Java使用get请求接收List集合数据(json)并导出报表
文章目录
- Java使用get请求接收List集合数据(json)并导出报表
- 前言
- 一、实现分析
- 二、Maven依赖(基于EasyExcel实现)
- 三、后台代码
- 四、使用PostMan测试
- 总结
前言
最近看了一下项目模块,发现前同事写的文件导出的功能很便捷(EasyExcel)。研究了一下发现这个功能需求以后变更的可能很大(需求只是导出了一个空模板,没有数据),所以预想着给这个功能完善一下,把数据也跟着导出来(毕竟客户很可能要这么干)。
当前实现效果如下:
很明显,之前导出的只是一个空模板,为了用户可以便捷更改信息再上传
话不多说,开始正题
一、实现分析
1、想导出的数据只是物品明细,数据量不大、信息相对不算私密,且用户使用频繁。所以使用get请求
2、get请求如何接收list集合数据参数呢,将List集合对象转换为json字符串接收,通过后台解析即可。(推荐)
3、也可以用@Requestbody注解接收对象,但感觉这样可能不符合规范,毕竟@Requestbody多用于post请求(后台能接到,但这种传递方式前台可能不太方便)
二、Maven依赖(基于EasyExcel实现)
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency>
三、后台代码
测试类:
@RestController
@RequestMapping("excel/test")
public class excelTest {@GetMapping("fileTest")public void downloadTemplate(@RequestParam String json, HttpServletResponse response) {String fileName = "测试导出模板";String sheetName = "测试导出模板";// 将json字符串转换为List集合对象List<GoodsDetailExcelEntity> list = JSONArray.parseArray(json, GoodsDetailExcelEntity.class);try {// 自定义的Excel工具类ExcelUtil.writeExcel(response, list, fileName, sheetName, GoodsDetailExcelEntity.class);} catch (Exception e) {System.out.println(e.getCause());}}}
GoodsDetailExcelEntity类
@Data
public class GoodsDetailExcelEntity {@ExcelProperty(value = "物资", index = 0)private String goods;@ExcelProperty(value = "规格", index = 1)private String specs;@ExcelProperty(value = "单位", index = 2)private String unit;@ExcelProperty(value = "单价", index = 3)private BigDecimal price;@ExcelProperty(value = "数量", index = 4)private Integer number;@ExcelProperty(value = "金额", index = 5)private BigDecimal money;@ExcelProperty(value = "施工部位", index = 6)private String constructPosition;@ExcelProperty(value = "备注", index = 7)private String memo;
}
ExcelUtil类,设置导出的excel样式
/*** 导出* @param response* @param data* @param fileName* @param sheetName* @param clazz* @throws Exception*/public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName, String sheetName, Class clazz) throws Exception {//表头样式WriteCellStyle headWriteCellStyle = new WriteCellStyle();//设置表头居中对齐headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//内容样式WriteCellStyle contentWriteCellStyle = new WriteCellStyle();//设置内容靠左对齐contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);}private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {fileName = URLEncoder.encode(fileName, "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");response.addHeader("Access-Control-Expose-Headers", "Content-disposition");return response.getOutputStream();}}
四、使用PostMan测试
注意:因为是用get请求 所以{}和[]在postman中会被认为是特殊字符从而转义
{ | %7B |
---|---|
} | %7D |
[ | %5B |
] | %5D |
不区分大小写
如果有其他的特殊字符转义,可以参照这个网址
常见URL字符及URL编码值列表大全
因为是导出文件,所以选择downLoad
接收到json格式的数据了,接下来就可以为所欲为了
程序跑完弹出窗口下载页面(在浏览器下载)
生成的带数据的Excel文件
总结
Excel样式还是差点意思,大家可以自行设置哈。
Java使用get请求接收List集合数据(json)并导出报表相关推荐
- java使用Socket类接收和发送数据
java使用Socket类接收和发送数据 网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接 ...
- java发送post请求上传文件和json数据
java发送post请求上传文件和json数据 因为第三方的上传服务post参数使用了两个@requestpart参数. 但是feign不可以使用两个@requestpart参数.会报错:java.l ...
- Java根据表格生成图_java绘制数据表格并导出为图片格式
/*** @Description : 导出图片 *@param: * *@return: * 2020-04-23*/ public void actionExportReport(HttpServ ...
- java socket发送定长报文_java使用Socket类接收和发送数据
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论 ...
- httpf发送 json_Java用HttpClient3发送http/https协议get/post请求,发送map,json,xml,txt数据...
使用的是httpclient 3.1, 使用"httpclient"4的写法相对简单点,百度:httpclient https post 当不需要使用任何证书访问https网页时, ...
- httpf发送 json_Java用HttpClient4发送http/https协议get/post请求,发送map,json,xml,txt数据...
刚写出来的,还未经测试, HttpUtil.java import java.io.IOException; import java.io.UnsupportedEncodingException; ...
- java的get请求获取网络中的图片
写项目的时候写的,感觉以后还会用,所以记录一下 一种通过 java 的get请求获取 网上图片的数据 二种,通过获取本地的具体文件下的图片的数据 前台写的 date.t.avatat 是 存在数据库中 ...
- java get post 注解,GET/POST接收或发送数据的问题
在文章开始,先来回忆一下GET.POST这两种请求方式的区别. ❈ Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们 ...
- java处理表单变量_Java自学之SpringMVC:接收表单数据
学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...
最新文章
- Web服务器——Apache相关内容详解
- [转]程序集之GAC---Global Assembly Cache
- XSS 前端防火墙 —— 天衣无缝的防护
- c++解释模式interpreter
- 曝光!衡中教室高清摄像头记录:不想一辈子吃苦,就必须闻鸡起舞!(转给学生)...
- 今年暑假不ac (c语言版)
- 一对一租房软件系统与设计可行性研究报告
- 1024福利|硬核无Bug,码上有红包!
- 动易html编辑器,解决动易后台编辑器(混合模式,编织模式不可用变灰
- 算法导论答案 16.2-2 0-1背包问题的动态规划算法
- Weblogic 部署两个应用
- Lisp真的是屠龙之技吗?
- 即将毕业大学生的第一个五年计划
- LeetCode: 872. Leaf-Similar Trees
- 独立键盘检测,矩阵键盘检测
- 定义一个电话簿,用人名查电话
- 使360浏览器打开网页默认为极速模式
- Scrapy中对xpath使用re
- 如何诊断SQL数据?
- xadmin报cannot import name ‘DEFAULT_FORMATS‘ from ‘import_export.admin‘/cannot import name ‘SKIP_ADMI