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

苍穹外卖项目日记(day12)

苍穹外卖|项目日记(day12)

前言: 今天的任务相对简单, 主要是熟悉一下在项目中操作Excel报表, 感觉挺简单的, 很多方法都封装好了.

总结: 今天是后端的完结, 不过还需努力, 这个项目只是入门, 还需要独自做一个项目才算初有成果,微服务, 408, 诺伊, ai都等着我呢
在这里插入图片描述

今日收获:

1.Apach POI(Excel)的入门使用

一.Apach POI(Excel)的入门使用

1. 基本概念

Apache POI 包含多个组件,其中处理 Excel 的主要有:

  • HSSF - 处理 Excel 97-2003 格式 (.xls)
  • XSSF - 处理 Excel 2007 及以上格式 (.xlsx)
  • SXSSF - XSSF 的流式 API,适用于大数据量

2. 在项目中导入依赖

<!-- 基础 POI -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version>
</dependency>
<!-- XSSF 支持 -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency>

3.项目中使用

需填写数据的Excel图片:

在这里插入图片描述

代码示例:
@Overridepublic void export(HttpServletResponse response) {// 1.查询数据库, 获取营业数据---查询最近30天的运营数据LocalDate begin = LocalDate.now().minusDays(30);LocalDate end = LocalDate.now().minusDays(1);LocalDateTime beginTime = LocalDateTime.of(begin, LocalTime.MIN);LocalDateTime endTime = LocalDateTime.of(end, LocalTime.MAX);// 概览数据BusinessDataVO businessData = workspaceService.getBusinessData(beginTime, endTime);// 2. 通过POI将数据写入到Excel文件中InputStream InStream = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");try {XSSFWorkbook workbook = new XSSFWorkbook(InStream);XSSFSheet sheet = workbook.getSheetAt(0);// 第二行XSSFRow row1 = sheet.getRow(1);row1.getCell(1).setCellValue("时间:"+begin+"至"+end);// 第四行 概览数据填写XSSFRow row3 = sheet.getRow(3);row3.getCell(2).setCellValue(businessData.getTurnover());row3.getCell(4).setCellValue(businessData.getOrderCompletionRate());row3.getCell(6).setCellValue(businessData.getNewUsers());// 第五行, 概览数据填写XSSFRow row4 = sheet.getRow(4);row4.getCell(2).setCellValue(businessData.getValidOrderCount());row4.getCell(4).setCellValue(businessData.getUnitPrice());// 填入明细数据for (int i = 0; i < 30; i++) {LocalDate date = begin.plusDays(i);BusinessDataVO datadetail = workspaceService.getBusinessData(LocalDateTime.of(date, LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));XSSFRow detail_row = sheet.getRow(7 + i);detail_row.getCell(1).setCellValue(date.toString());detail_row.getCell(2).setCellValue(datadetail.getTurnover());detail_row.getCell(3).setCellValue(datadetail.getValidOrderCount());detail_row.getCell(4).setCellValue(datadetail.getOrderCompletionRate());detail_row.getCell(5).setCellValue(datadetail.getUnitPrice());detail_row.getCell(6).setCellValue(datadetail.getNewUsers());}// 3. 通过输出流将Excel文件下载到客户端浏览器ServletOutputStream outputStream = response.getOutputStream();workbook.write(outputStream);workbook.close();outputStream.close();} catch (IOException e) {throw new RuntimeException(e);}}

完结撒花!!!

http://www.lryc.cn/news/592368.html

相关文章:

  • 再探Java多线程Ⅱ --- (创建方式+等待唤醒+Lock锁)
  • 【论文蒸馏】Recent Advances in Speech Language Models: A Survey
  • 《设计模式之禅》笔记摘录 - 8.命令模式
  • 企业如何让内部视频仅限公司官网或指定域名播放?
  • 2025年SEVC SCI2区,利用增强粒子群算法(MR-MPSO)优化MapReduce效率和降低复杂性,深度解析+性能实测
  • 某邮生活旋转验证码逆向
  • 5W8-3D牢游戏超级大集合[2012年6月] 地址 + 解压密码
  • Python绘制数据(二)
  • C语言实战:超级玛丽游戏
  • 工业数据集成中间件工具OPC Router详细介绍
  • 大模型格式
  • sky-take-out项目Mybatis的使用
  • AE电源MDX 5K 10K 15K 20K 25K 30K手侧操作使用说明
  • 【Linux】环境基础与开发工具的使用
  • 数据结构--JDK17新增语法和顺序表
  • blender如何队列渲染多个工程文件的动画?
  • 集训Demo4
  • 本地部署 Kimi K2 全指南(llama.cpp、vLLM、Docker 三法)
  • 【playwright篇】教程(十六)[macOS+playwright相关问题]
  • ClickHouse物化视图避坑指南:原理、数据迁移与优化
  • IntelliJ IDEA大括号格式设置:换行改行尾
  • C#测试调用ServiceController类查询及操作服务的基本用法
  • vscode编辑Markdown文件
  • 【51】MFC入门到精通——MFC串口助手(一)---初级版(串口设置、初始化、打开/关闭、状态显示),附源码
  • el-date-picker 如何给出 所选月份的最后一天
  • 几款开源的安全监控与防御工具分享
  • 电脑装机软件一键安装管理器
  • 开源的大语言模型(LLM)应用开发平台Dify
  • 飞凌嵌入式亮相第九届瑞芯微开发者大会:AIoT模型创新重做产品
  • 【48】MFC入门到精通——MFC 文件读写总结 CFile、CStdioFile、CFileDialog