Apache POI 入门·第一话

news/2024/11/24 12:12:18/

文章目录

  • 1 摘要
  • 2 Apache POI
    • 2.1 介绍
    • 2.2 应用场景
    • 2.3 入门案例
      • 2.3.1 将数据写入Excel文件
        • 2.3.1.1 导入POI maven坐标
        • 2.3.1.2 代码开发
        • 2.3.1.3 实现效果
      • 2.3.2 读取Excel文件中的数据
      • 2.3.3 实现效果
    • 2.4 开发案例——导出运营数据Excel报表
      • 2.4.1 产品原型
      • 2.4.2 接口设计
      • 2.4.3 代码实现
        • 2.4.3.1 Controller层
        • 2.4.3.2 Service层
        • 2.4.3.3 Service层实现类
        • 2.4.3.4 效果演示

1 摘要

文章主要自从POI的介绍应用场景入门案例开发案例入手POI入门学习。

2 Apache POI

2.1 介绍

Apache POI :处理Miscrosoft Office各种文件格式的开源项目,如:使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作
注:本文侧重于讲解POI 操作 Excel 文件

2.2 应用场景

  • 银行网银系统导出交易明细
    在这里插入图片描述
  • 各种业务系统导出Excel报表
    在这里插入图片描述

2.3 入门案例

2.3.1 将数据写入Excel文件

2.3.1.1 导入POI maven坐标

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

2.3.1.2 代码开发

注意:Excel中每行下标均从下标0开始。

    /*** 基于POI向Excel文件写入数据* @throws Exception*/public static void write() throws Exception{//在内存中创建一个Excel文件对象XSSFWorkbook excel = new XSSFWorkbook();//创建sheet页XSSFSheet sheet = excel.createSheet("exceltest");//在sheet页中创建行,下标0 开始 ,0表示第一行XSSFRow row1 = sheet.createRow(0);//创建单元格并在单元格中设置值,单元格编号也是从  下标0 开始row1.createCell(1).setCellValue("姓名");row1.createCell(2).setCellValue("城市");XSSFRow row2 = sheet.createRow(1);row2.createCell(1).setCellValue("李明");row2.createCell(2).setCellValue("西安");XSSFRow row3 = sheet.createRow(2);row3.createCell(1).setCellValue("张三");row3.createCell(2).setCellValue("北京");FileOutputStream out = new FileOutputStream(new File("D:\\workData\\POItest\\exceltest.xlsx"));//通过输入流将内存中的Excel文件写入到磁盘上excel.write(out);//关闭资源out.flush();out.close();excel.close();}public static void main(String[] args) throws Exception {write();System.out.println("==写入成功==");}

2.3.1.3 实现效果

在这里插入图片描述

2.3.2 读取Excel文件中的数据

public static void read() throws Exception {FileInputStream in = new FileInputStream(new File("D:\\workData\\POItest\\exceltest.xlsx"));//通过输入流读取指定的Excel文件XSSFWorkbook excel = new XSSFWorkbook(in);//获取Excel文件中的第一个sheet页XSSFSheet sheet = excel.getSheetAt(0);//获取sheet页中的最后一行行号int lastRowNum = sheet.getLastRowNum();for (int i = 0; i < lastRowNum; i++) {//获取sheet页中的行XSSFRow titleRow = sheet.getRow(i);//获取行的第2个单元格XSSFCell cell1 = titleRow.getCell(1);//获取单元格中的文本内容String CellValue1 = cell1.getStringCellValue();//获取行的第三个单元格XSSFCell cell2 = titleRow.getCell(2);//获取单元格中文本内容String cellValue2 = cell2.getStringCellValue();System.out.println(CellValue1 + " " + cellValue2);in.close();excel.close();}}public static void main(String[] args) throws Exception {//write();//System.out.println("==写入成功==");read();System.out.println("==读取成功==");}

2.3.3 实现效果

在这里插入图片描述

2.4 开发案例——导出运营数据Excel报表

2.4.1 产品原型

在这里插入图片描述
业务规则:

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

2.4.2 接口设计

在这里插入图片描述

2.4.3 代码实现

  • 设计Excel模板文件
  • 查询近30天的运营数据
  • 将查询到的运营数据写入模板文件
  • 通过输出流将Excel文件下载到客户端浏览器
    在这里插入图片描述

2.4.3.1 Controller层

    /*** 导出Excel报表接口* @return*/@GetMapping("export")@ApiOperation("导出Excel报表接口")public void export(HttpServletResponse response){reportService.export(response);}

2.4.3.2 Service层

    /*** 导出Excel报表接口*/void export(HttpServletResponse response);

2.4.3.3 Service层实现类

    /*** 导出Excel报表接口*/@Overridepublic void export(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 row3 = sheet.getRow(3);row3.getCell(2).setCellValue(businessData.getTurnover());row3.getCell(4).setCellValue(businessData.getOrderCompletionRate());row3.getCell(6).setCellValue(businessData.getNewUsers());//获得第5行XSSFRow row5 = sheet.getRow(4);row5.getCell(2).setCellValue(businessData.getValidOrderCount());row5.getCell(4).setCellValue(businessData.getUnitPrice());for (int i = 0; i < 30; i++) {LocalDate date = begin.plusDays(i);//for循环遍历查询出来的 营业数据,如若不然只会有一样的重复数据//BusinessDataVO businessData2 = workspaceService.getBusinessData(LocalDateTime.of(begin,LocalTime.MIN),LocalDateTime.of(end,LocalTime.MAX));BusinessDataVO businessData2 = workspaceService.getBusinessData(LocalDateTime.of(date, LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));//准备明细数据XSSFRow row = sheet.getRow(7 + i);row.getCell(1).setCellValue(date.toString());row.getCell(2).setCellValue(businessData2.getTurnover());row.getCell(3).setCellValue(businessData2.getValidOrderCount());row.getCell(4).setCellValue(businessData2.getOrderCompletionRate());row.getCell(5).setCellValue(businessData2.getUnitPrice());row.getCell(6).setCellValue(businessData2.getNewUsers());}//通过输出流将文件下载到客户端浏览器中ServletOutputStream out = response.getOutputStream();excel.write(out);//关闭资源out.flush();out.close();excel.close();} catch (Exception e) {e.printStackTrace();}}

2.4.3.4 效果演示

在这里插入图片描述


http://www.ppmy.cn/news/200281.html

相关文章

百度Apollo5.5版本安装教程

百度Apollo5.5版本安装教程 Apollo安装过程概述Apollo安装过程 Apollo安装过程概述 Apollo 5.5增强了先前Apollo版本中复杂的城市道路自动驾驶能力&#xff0c;支持城市到城市之间的自动驾驶功能。    推荐的机器配置&#xff1a;4核CPU&#xff0c;8GB内存&#xff08;Apoll…

百度 Apollo2.0

P4-AI生态开放战略 先向大家介绍一下百度做自动驾驶的背景。就像百度总裁COO陆奇在CES大会上讲的&#xff0c;可能不少朋友已经了解到了——百度已经是一家AI公司。 我们可以看到科技大潮的演进&#xff0c;已经从命令行、客户端服务器、互联网、移动互联网一路走来&#xff…

微信h5支付(php版) 2019

1. 登录商户平台-->产品中心-->我的产品-->支付产品-->H5支付&#xff08;申请开通&#xff09;&#xff0c; 平台地址&#xff1a;https://pay.weixin.qq.com/index.php/core/home/login?return_url%2Findex.php&#xff0c; 2. 直接上代码&#xff0c;一个php…

Apache POI基本介绍---入门级

POI介绍 ApachePOI是用Java编写的免费开源的跨平台的JavaAPI&#xff0c;ApachePOI提供API给Java程序对MicrosoftOffice格式档案读和写的功能&#xff0c;其中使用最多的就是使用POI操作Excel文件。 maven坐标&#xff1a; <dependency><groupId>org.apache.poi<…

a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...

刷机包教程: 1、下载安装线刷宝以及对应机型的ROM包。 点击下载 最新版线刷宝刷机工具,下载安装。 1.1 更改安装路径 软件截图1 1.2 正在安装 软件截图2 1.3 安装完成 软件截图3 2、连接手机,在首页按照实际情况点击按钮。 软件截图4 3、点击“选择本地ROM”,选择相匹配的线…

Apollo5.0安装

前言 Apollo5.0要求&#xff1a; 系统版本在ubuntu16.04或ubuntu16.04以上NVIDIA驱动>410.48 Driver Download 一般ubutun上自带了NVIDIA驱动&#xff0c;可在Setting->Software&Update->Additional Driver里查看&#xff1b;或者根据这个说明下载Apollo内核跟英…

百度Apollo6.0(5.5)安装

百度Apollo安装过程比较简单&#xff0c;但还是记录一下&#xff1a; 首先&#xff0c;安装Apollo时有硬件要求。基本要求 下载源码 git clone https://github.com/apolloauto/apollo 如果你没有安装docker&#xff0c;那么需要自己安装docker。(已经安装了docker&#xff0c…

oppoa57升级android版本,OPPO A57刷机教程_OPPO A57升级更新官方系统包

下面整理一下咱们的OPPO A57手机的刷机教程了&#xff0c;这个刷机教程也是针对官方的rom包的&#xff0c;之前有机友下载了官方的rom包&#xff0c;可是又不知道如何的操作&#xff0c;所以在这里整理了一个详细的卡刷刷机的教程供大家参考了&#xff0c;不过今天在这里说的卡…