Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表

文章目录

  • 前言
  • 工作台
    • 需求分析
    • 代码导入
    • 功能测试
  • Apache POI
    • 介绍
    • 入门案例
      • 写入excel文件内容
      • 读取excel文件
  • 导出运营数据Excel表
    • 需求分析
    • 代码开发
    • 功能测试

前言

最后一天,主要就是数据怎么从后端导出到excel表格,以及工作台内容的开发

工作台

需求分析

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第1张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第2张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第3张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第4张图片

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第5张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第6张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第7张图片

代码导入

自己导入一下

功能测试

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第8张图片

Apache POI

介绍

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第9张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第10张图片

入门案例

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第11张图片

写入excel文件内容

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第12张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第13张图片
效果
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第14张图片

读取excel文件

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第15张图片
效果
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第16张图片

导出运营数据Excel表

需求分析

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第17张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第18张图片

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第19张图片

代码开发

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第20张图片

主要就是接受请求,然后从数据库读取数据写到默认的excel表格里面,然后通过httpservletrespons对象获取一个输出流,写回文件

把我们的默认excel模板文件导入项目resource里面
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第21张图片

reportController

    /**
     *到处运营数据报表
     */
    @GetMapping("/export")
    @ApiOperation("导出运营数据报表")
    public void export(HttpServletResponse reponse){
        reportService.exportBusinessData(reponse);

    }

reportServiceImpl

    /**
     * 导出运营数据报表
     * @param response
     */
    public void exportBusinessData(HttpServletResponse response) {
        //1. 查询数据库,获取营业数据---查询最近30天的运营数据
        LocalDate dateBegin = LocalDate.now().minusDays(30);
        LocalDate dateEnd = LocalDate.now().minusDays(1);

        //查询概览数据
        BusinessDataVO businessDataVO = workspaceService.getBusinessData(LocalDateTime.of(dateBegin, LocalTime.MIN), LocalDateTime.of(dateEnd, LocalTime.MAX));

        //2. 通过POI将数据写入到Excel文件中
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");

        try {
            //基于模板文件创建一个新的Excel文件
            XSSFWorkbook excel = new XSSFWorkbook(in);

            //获取表格文件的Sheet页
            XSSFSheet sheet = excel.getSheet("Sheet1");

            //填充数据--时间
            sheet.getRow(1).getCell(1).setCellValue("时间:" + dateBegin + "至" + dateEnd);

            //获得第4行
            XSSFRow row = sheet.getRow(3);
            row.getCell(2).setCellValue(businessDataVO.getTurnover());
            row.getCell(4).setCellValue(businessDataVO.getOrderCompletionRate());
            row.getCell(6).setCellValue(businessDataVO.getNewUsers());

            //获得第5行
            row = sheet.getRow(4);
            row.getCell(2).setCellValue(businessDataVO.getValidOrderCount());
            row.getCell(4).setCellValue(businessDataVO.getUnitPrice());

            //填充明细数据
            for (int i = 0; i < 30; i++) {
                LocalDate date = dateBegin.plusDays(i);
                //查询某一天的营业数据
                BusinessDataVO 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());
            }

            //3. 通过输出流将Excel文件下载到客户端浏览器
            ServletOutputStream out = response.getOutputStream();
            excel.write(out);

            //关闭资源
            out.close();
            excel.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

功能测试

Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第22张图片
Java项目-苍穹外卖-Day12-Apache POI及Excel数据报表_第23张图片

你可能感兴趣的:(项目记录,java,apache,excel)