玉树营销网站建设公司,网站标题作弊详解,wordpress找不到分类页面,成品网站源码多少钱导出运营数据Excel报表
需求分析和设计
产品原型
在数据统计页面#xff0c;有一个数据导出的按钮#xff0c;点击该按钮时#xff0c;其实就会下载一个文件。这个文件实际上是一个Excel形式的文件#xff0c;文件中主要包含最近30日运营相关的数据。表格的形式已经固定…导出运营数据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();}}