当前位置: 首页 > news >正文

导出运营数据Excel报表

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

产品原型

在数据统计页面,有一个数据导出的按钮,点击该按钮时,其实就会下载一个文件。这个文件实际上是一个Excel形式的文件,文件中主要包含最近30日运营相关的数据。表格的形式已经固定,主要由概览数据和明细数据两部分组成。真正导出这个报表之后,相对应的数字就会填充在表格中,就可以进行存档。

原型图:

需求分析以及接口设计

业务规则:

  • 导出Excel形式的报表文件

  • 导出最近30天的运营数据

技术细节

1.Controller层

/*** 导出运营数据Excel表* @param response*/@GetMapping("/export")@ApiOperation("导出运营数据Excel表")public void export(HttpServletResponse response){reportService.export(response);}

2.Service层:

 /*** 导出运营数据Excel表* @param httpServletResponse*/public void export(HttpServletResponse httpServletResponse) {//1.查询近30天的运营数据LocalDateTime begin = LocalDateTime.now().minusDays(30);LocalDateTime end = LocalDateTime.now().minusDays(1);BusinessDataVO businessData = workspaceService.getBusinessData(begin,end);//2.将运营数据写入Excel表//2.1读取模版InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/excel.xlsx");try {//2.2将运营数据填充到模版XSSFWorkbook excel = new XSSFWorkbook(inputStream);XSSFSheet sheet = excel.getSheet("Sheet1");//填充时间XSSFRow row = sheet.getRow(1);row.getCell(1).setCellValue("时间:" + begin + "~" + end);//填充概览数据(第4行)row = sheet.getRow(3);row.getCell(2).setCellValue(businessData.getTurnover());row.getCell(4).setCellValue(businessData.getOrderCompletionRate());row.getCell(6).setCellValue(businessData.getNewUsers());//第5行row = sheet.getRow(4);row.getCell(2).setCellValue(businessData.getValidOrderCount());row.getCell(4).setCellValue(businessData.getUnitPrice());//明细数据(第8行开始)for (int i = 0; i < 30; i++) {//获取到每一行row = sheet.getRow(7 + i);//填充一行的数据//获取到每一天LocalDateTime date = begin.plusDays(i);//准备每天的明细数据businessData = workspaceService.getBusinessData(date, date.plusDays(1));row.getCell(1).setCellValue(date.toString());row.getCell(2).setCellValue(businessData.getTurnover());row.getCell(3).setCellValue(businessData.getValidOrderCount());row.getCell(4).setCellValue(businessData.getOrderCompletionRate());row.getCell(5).setCellValue(businessData.getUnitPrice());row.getCell(6).setCellValue(businessData.getNewUsers());}//3.下载操作ServletOutputStream outputStream = httpServletResponse.getOutputStream();excel.write(outputStream);//关流outputStream.flush();outputStream.close();inputStream.close();excel.close();} catch (IOException e) {e.printStackTrace();}}

效果展示


http://www.mrgr.cn/news/5530.html

相关文章:

  • 小程序学习day11-生命周期函数、组件所在页面的生命周期、自定义组件的插槽、自定义组件的父子通信
  • 什么是网络安全?网络安全防范技术包括哪些?
  • Python中的鸭子类型
  • go中使用反射的动态方法调用
  • 《智慧公厕系列产品:引领公共卫生设施新变革》@卓振思众
  • 去雾去雨算法
  • 二手手机管理系统|基于Springboot的二手手机管理系统设计与实现(源码+数据库+文档)
  • SQL,将多对多的关联记录按行输出
  • opencv-python图像增强十:图像色温调整
  • Github文件夹重命名|编程tips·24-08-22
  • 第11章 第6节 软件测试类型(软件评测师)
  • uniapp+vue3的defineProps传递
  • 防爆气象仪的工作原理
  • CTFHUB | web进阶 | JSON Web Token | 无签名
  • C# 泛型
  • 理解现代前端开发:从HTML到React的进化之路
  • 浅谈Spring Boot
  • Python 如何使用 functools 模块
  • Go RPC 和 gRPC 技术详解
  • 学习Math.random()的应用