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)并导出报表相关推荐

  1. java使用Socket类接收和发送数据

    java使用Socket类接收和发送数据 网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接 ...

  2. java发送post请求上传文件和json数据

    java发送post请求上传文件和json数据 因为第三方的上传服务post参数使用了两个@requestpart参数. 但是feign不可以使用两个@requestpart参数.会报错:java.l ...

  3. Java根据表格生成图_java绘制数据表格并导出为图片格式

    /*** @Description : 导出图片 *@param: * *@return: * 2020-04-23*/ public void actionExportReport(HttpServ ...

  4. java socket发送定长报文_java使用Socket类接收和发送数据

    网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论 ...

  5. httpf发送 json_Java用HttpClient3发送http/https协议get/post请求,发送map,json,xml,txt数据...

    使用的是httpclient 3.1, 使用"httpclient"4的写法相对简单点,百度:httpclient https post 当不需要使用任何证书访问https网页时, ...

  6. httpf发送 json_Java用HttpClient4发送http/https协议get/post请求,发送map,json,xml,txt数据...

    刚写出来的,还未经测试, HttpUtil.java import java.io.IOException; import java.io.UnsupportedEncodingException; ...

  7. java的get请求获取网络中的图片

    写项目的时候写的,感觉以后还会用,所以记录一下 一种通过 java 的get请求获取 网上图片的数据 二种,通过获取本地的具体文件下的图片的数据 前台写的 date.t.avatat 是 存在数据库中 ...

  8. java get post 注解,GET/POST接收或发送数据的问题

    在文章开始,先来回忆一下GET.POST这两种请求方式的区别. ❈ Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们 ...

  9. java处理表单变量_Java自学之SpringMVC:接收表单数据

    学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...

最新文章

  1. Web服务器——Apache相关内容详解
  2. [转]程序集之GAC---Global Assembly Cache
  3. XSS 前端防火墙 —— 天衣无缝的防护
  4. c++解释模式interpreter
  5. 曝光!衡中教室高清摄像头记录:不想一辈子吃苦,就必须闻鸡起舞!(转给学生)...
  6. 今年暑假不ac (c语言版)
  7. 一对一租房软件系统与设计可行性研究报告
  8. 1024福利|硬核无Bug,码上有红包!
  9. 动易html编辑器,解决动易后台编辑器(混合模式,编织模式不可用变灰
  10. 算法导论答案 16.2-2 0-1背包问题的动态规划算法
  11. Weblogic 部署两个应用
  12. Lisp真的是屠龙之技吗?
  13. 即将毕业大学生的第一个五年计划
  14. LeetCode: 872. Leaf-Similar Trees
  15. 独立键盘检测,矩阵键盘检测
  16. 定义一个电话簿,用人名查电话
  17. 使360浏览器打开网页默认为极速模式
  18. Scrapy中对xpath使用re
  19. 如何诊断SQL数据?
  20. xadmin报cannot import name ‘DEFAULT_FORMATS‘ from ‘import_export.admin‘/cannot import name ‘SKIP_ADMI

热门文章

  1. DOS下显示JPG/JPEG图像文件
  2. 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)
  3. 卷积神经网络CNNs详解参考----MNIST
  4. 【STM32F4系列】【HAL库】【自制库】WS2812控制(软件部分)
  5. 一直无法进入BIOS
  6. UE4-(蓝图)第二十四课UI主菜单(UI主菜单功能、镜头过渡,控制权切换)
  7. mysql配置文件生效测试
  8. 超详细讲解无迹卡尔曼(UKF)滤波(个人整理结合代码分析)
  9. redis学习——redis事务
  10. HR人力资源管理精粹70则