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

苍穹外卖--导出运营数据Excel报表

导出运营数据Excel报表

需求分析和设计

产品原型

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

业务规则:

  • 导出Excel形式的报表文件
  • 导出最近30天的运营数据

注意:

  • 当前接口没有传递参数,因为导出的是最近30天的运营数据,后端计算即可,所以不需要任何参数

  • 当前接口没有返回数据,因为报表导出功能本质上是文件下载,服务端会通过输出流将Excel文件下载到客户端浏览器

代码开发

实现步骤

1). 设计Excel模板文件

2). 查询近30天的运营数据

3). 将查询到的运营数据写入模板文件

4). 通过输出流将Excel文件下载到客户端浏览器

Controller层

根据接口定义,在ReportController中创建export方法:

	/*** 导出运营数据报表* @param response*/@GetMapping("/export")@ApiOperation("导出运营数据报表")public void export(HttpServletResponse response){reportService.exportBusinessData(response);}
Service层接口

在ReportService接口中声明导出运营数据报表的方法:

	/*** 导出近30天的运营数据报表* @param response**/void exportBusinessData(HttpServletResponse response);
Service层实现类

在ReportServiceImpl实现类中实现导出运营数据报表的方法:

提前将资料中的运营数据报表模板.xlsx拷贝到项目的resources/template目录中

    /**导出近30天的运营数据报表* @param response**/public void exportBusinessData(HttpServletResponse response) {LocalDate begin = LocalDate.now().minusDays(30);LocalDate end = LocalDate.now().minusDays(1);//查询概览运营数据,提供给Excel模板文件BusinessDataVO businessData = workspaceService.getBusinessData(LocalDateTime.of(begin,LocalTime.MIN), LocalDateTime.of(end, LocalTime.MAX));InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");try {//基于提供好的模板文件创建一个新的Excel表格对象XSSFWorkbook excel = new XSSFWorkbook(inputStream);//获得Excel文件中的一个Sheet页XSSFSheet sheet = excel.getSheet("Sheet1");sheet.getRow(1).getCell(1).setCellValue(begin + "至" + end);//获得第4行XSSFRow row = sheet.getRow(3);//获取单元格row.getCell(2).setCellValue(businessData.getTurnover());row.getCell(4).setCellValue(businessData.getOrderCompletionRate());row.getCell(6).setCellValue(businessData.getNewUsers());row = sheet.getRow(4);row.getCell(2).setCellValue(businessData.getValidOrderCount());row.getCell(4).setCellValue(businessData.getUnitPrice());for (int i = 0; i < 30; i++) {LocalDate date = begin.plusDays(i);//准备明细数据businessData = workspaceService.getBusinessData(LocalDateTime.of(date,LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));row = sheet.getRow(7 + i);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());}//通过输出流将文件下载到客户端浏览器中ServletOutputStream out = response.getOutputStream();excel.write(out);//关闭资源out.flush();out.close();excel.close();}catch (IOException e){e.printStackTrace();}}
http://www.lryc.cn/news/251827.html

相关文章:

  • cocos creator-碰撞检测
  • 算法通关第十七关黄金挑战——透析跳跃问题
  • GPT带我学Openpyxl操作Excel
  • 图扑参展高交会-全球清洁能源创新博览会
  • vue v-permission权限指令
  • ER图是什么,怎么画?
  • 基于51单片机的十字路口交通灯_5s黄灯倒计时闪烁
  • JavaWeb | JSP内置对象
  • 如何保持高能量
  • Oracle研学-基础操作
  • jmeter下载地址
  • C语言,求取数组的序亏:已知一个整数数组,求出个数组中每个元素在整个 数组的排序。
  • 信息流广告行为兴趣定向底层逻辑算法
  • Selenium——isDisplayed()、isEnabled()、isSelected()
  • unity UGUI中获取点击位置处的URL链接
  • 【Arduino库之:FastLED库】
  • 两道面试题秒杀你的C++基础!
  • 回归预测 | MATLAB实现SMA+WOA+BOA-LSSVM基于黏菌算法+鲸鱼算法+蝴蝶算法优化LSSVM回归预测
  • 柔性数组(Flexible Array Members)在C语言中的应用
  • 华为手环配置技巧
  • 2023全球数字贸易大赛--什么是 DID 身份,中青校园APP,全球碳交易=树根格致,多元空间=购物时代的web3.0,超喵Overview
  • 有序表常见题型
  • 【开源】基于JAVA语言的桃花峪滑雪场租赁系统
  • 【开源】基于Vue.js的图书管理系统
  • python跑ncnn(验证模型是否转换成功)
  • FL Studio 21.2.1.3859中文破解激活版2024免费下载安装图文教程
  • 人工智能发展史
  • 【面试经典 150 | 二分查找】搜索插入位置
  • DAPP开发【06】nodejs安装与npm路径更换
  • 数据结构奇妙旅程之顺序表和链表