您的位置:首页 > 新闻 > 热点要闻 > ui设计零基础到精通自学_品牌线上推广方案_网站seo快速优化_友情链接查询结果

ui设计零基础到精通自学_品牌线上推广方案_网站seo快速优化_友情链接查询结果

2024/10/31 3:18:14 来源:https://blog.csdn.net/qq_40603125/article/details/143199385  浏览:    关键词:ui设计零基础到精通自学_品牌线上推广方案_网站seo快速优化_友情链接查询结果
ui设计零基础到精通自学_品牌线上推广方案_网站seo快速优化_友情链接查询结果

简介

在这里插入图片描述

常见的使用场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

入门

导入maven依赖

<!-- poi -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId>
</dependency> 
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId>
</dependency>

简单了解 基本元素

  • 整个excel文件
  • excel分为多个sheet
  • 一个sheet分为

代码(写excel的示例)

@Slf4j
public class ApachePoiTest {// 测试写入excel@Testpublic void testWriteExcel() {//  创建文件夹File directory = new File("src/testFile");if (!directory.exists()) {boolean mkdir = directory.mkdirs();if (!mkdir) {log.error("创建文件夹失败");}}try (// 1. 创建工作簿 excelWorkbook workbook = new HSSFWorkbook();// 创建输出流FileOutputStream fileOutputStream = new FileOutputStream("src/testFile/user.xlsx");) {// 2. 创建工作表 sheetSheet sheet = workbook.createSheet("用户信息");// 3. 创建行 0表示第一行Row row = sheet.createRow(0);// 4. 创建单元格 0表示第一列Cell cell = row.createCell(0);// 5. 设置单元格内容 0行0列的单元格内容为用户名cell.setCellValue("用户名");// 6. 输出到文件workbook.write(fileOutputStream);} catch (Exception e) {log.error("写入excel失败", e);}}}

代码(读excel的示例)

    // 测试读取excel@Testpublic void testReadExcel() {try (FileInputStream fileInputStream =  new FileInputStream("src/testFile/user.xlsx");// 1. 创建工作簿 excelWorkbook workbook = new HSSFWorkbook(fileInputStream);) {// 2. 读取文件workbook.getSheetAt(0);// 3. 获取工作表// Sheet sheet = workbook.getSheetAt(0);Sheet sheet = workbook.getSheet("用户信息");// 4. 获取文件最后一行的行号int lastRowNum = sheet.getLastRowNum();// 5. 获取行for (int i = 0; i <= lastRowNum; i++) {// 6. 获取此行的最后一列的列号Row row = sheet.getRow(i);short lastCellNum = row.getLastCellNum();for (int j = 0; j < lastCellNum; j++) {// 7. 获取单元格Cell cell = row.getCell(j);// 8. 判断单元格类型 获取单元格内容 根据单元格类型获取内容switch (cell.getCellTypeEnum()) {case STRING:log.info(cell.getStringCellValue());break;case NUMERIC:log.info(String.valueOf(cell.getNumericCellValue()));break;default:break;}}}} catch (Exception e) {log.error("读取excel失败", e);}}

需求分析

在这里插入图片描述

实现步骤

在这里插入图片描述

准备模板

在这里插入图片描述
在这里插入图片描述

代码

controller

    // 导出数据 需要response的输出流@GetMapping("/export")@ApiOperation("导出数据")public void export(HttpServletRequest request, HttpServletResponse response) {// 1.获取数据// 2.导出数据reportService.exportBusinessData(response);}

service

    /*** 导出营业数据* @param response 响应,用于获取输出流*/@Overridepublic void exportBusinessData(HttpServletResponse response) {// 1.查询数据库,获取数据 (概览数据和明细数据)LocalDate dateBegin = LocalDate.now().minusDays(30);LocalDate dateEnd = LocalDate.now().minusDays(1);LocalDateTime timeBegin = LocalDateTime.of(dateBegin, LocalTime.MIN);LocalDateTime timeEnd = LocalDateTime.of(dateEnd, LocalTime.MAX);BusinessDataVO businessDataVO = workspaceService.getBusinessData(timeBegin, timeEnd);// 2.通过poi将数据写入到excel中try(// 获取模板文件InputStream inputStream = this.getClass().getResourceAsStream("/template/运营数据报表模板.xlsx");// 读取模板文件// 创建工作簿XSSFWorkbook excel = new XSSFWorkbook(inputStream);// 获取输出流ServletOutputStream outputStream = response.getOutputStream();){//填充数据XSSFSheet sheet = excel.getSheet("Sheet1");// 第2行第2列 日期sheet.getRow(1).getCell(1).setCellValue("时间" + dateBegin + "至" + dateEnd);// 第4行XSSFRow row = sheet.getRow(3);// 第4行 第3列 营业额row.getCell(2).setCellValue(businessDataVO.getTurnover().doubleValue());// 第4行 5列 完成率row.getCell(4).setCellValue(businessDataVO.getOrderCompletionRate());// 第4行 7列 新增用户row.getCell(6).setCellValue(businessDataVO.getNewUsers());// 第5行row = sheet.getRow(4);// 第5行 3列 有效订单数row.getCell(2).setCellValue(businessDataVO.getValidOrderCount());// 第5行 5列 平均客单价row.getCell(4).setCellValue(businessDataVO.getUnitPrice().doubleValue());// 填充明细数据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().doubleValue());// 有效订单数row.getCell(3).setCellValue(businessData.getValidOrderCount());// 完成率row.getCell(4).setCellValue(businessData.getOrderCompletionRate());// 新增用户row.getCell(5).setCellValue(businessData.getNewUsers());}// 3.通过response将excel文件输出到浏览器excel.write(outputStream);}catch (Exception e){log.error("导出营业数据失败", e);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com