【Apache POI】Apache POI-操作Excel表格-简易版

devtools/2024/10/18 20:47:36/

Catalog

  • Apache POI-操作Excel表格
    • 1. 需求
    • 2. 优点
    • 3. 缺点
    • 4. 应用场景
    • 5. 使用方法
    • 6. SpringBoot工程中处理Excel表格
    • 7. Demo示例

Apache POI-操作Excel表格

1. 需求

大多数项目的在运营过程中,会产生运营数据,如外卖系统中需要统计每日的订单完成数、每种菜品的销量等数据,这些都是商家关心的事情,如果可以将这些数据整理成Excel表格,可以让商家更直观地了解到这些数据。

Apache POI这个开源项目就可以用于处理微软各式各样的文件,如读、写、创建文件等,这里主要介绍的是如何处理Excel文件。

2. 优点

  • 开源免费:不需要侧重关心数据安全等方面的问题。
  • 跨平台:Apache POI是使用Java语法编写的,在任何支持Java语言的平台下面都可以使用。
  • 容易集成:在springboot项目中使用起来非常方便。

3. 缺点

  • 操作繁琐:Apache POI中丰富的api,增加了使用的难度
  • 性能:处理大型Excel文件的时候,会大量占用内存
  • 不支持新功能:无法及时同步Excel这个软件更新的功能

4. 应用场景

  1. 数据导入导出:Apache POI可用于从数据库导出数据到Excel文件,或者从Excel文件中读取数据并导入到数据库中。
  2. 报表生成:可以使用Apache POI创建自定义的Excel报表,包括图表、数据分析和格式化等功能。
  3. 数据处理:可以利用Apache POI对Excel文件中的数据进行处理和分析,如数据清洗、转换和计算等。

5. 使用方法

Apache POI中提供的api处理Excel表格的大多数逻辑都和直接使用Excel(微软)这个软件类似。

在大多数通过Java程序来操作Excel表格的场景中,由于Excel的样式较为复杂,通过Java程序来设计样式会很繁琐,所以大多数的应用场景都是先通过微软的Excel这个软件,先将Excel的样式设计好,如设计表格头的标题、字体大小、合并单元格和颜色等保存为模板文件到项目工程的resource目录下面,再通过反射(输出流)获取到resource目录下的资源文件(Excel模板文件)。

最后,直接在模板文件中填充从数据库中处理好的数据即可。

6. SpringBoot工程中处理Excel表格

  1. 导入Maven坐标

     <!--导入POI坐标--><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><!--用作测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>
    
  2. 获取输入流(获取Excel文件)

  3. 获取Sheet页(可设置Sheet的名称)

  4. 获取行(可直接获取最后一行有内容的行号, 最后一行的行号从0开始的)

  5. 获取列(可直接获取最后一列有内容的行号,最后一行的列号从1开始的)

  6. 对Excel文件进行读写操作

  7. 获取输出流(将Excel文件保存到磁盘上或者输出到浏览器上面)

7. Demo示例

java">/*** 基于POI向Excel文件中写入数据*/@Testpublic void writeExcel() throws IOException {//在内存中创建Excel文件XSSFWorkbook excel = new XSSFWorkbook();//创建sheet页XSSFSheet sheet = excel.createSheet("user");//创建行XSSFRow row0 = sheet.createRow(0);XSSFRow row1 = sheet.createRow(1);XSSFRow row2 = sheet.createRow(2);//创建列row0.createCell(0).setCellValue("name");row0.createCell(1).setCellValue("age");row1.createCell(0).setCellValue("aimin");row1.createCell(1).setCellValue("22");row2.createCell(0).setCellValue("Tony");row2.createCell(1).setCellValue("22");//存入磁盘//创建输出流,文件路径写自己的FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\WORKSPACE-Java\\normal-project\\Apache_POI_test\\files\\info.xlsx"));excel.write(fileOutputStream);//关闭资源fileOutputStream.flush();fileOutputStream.close();excel.close();}/*** 基于POI读取Excel中的数据*/@Testpublic void readExcel() throws Exception{//通过输入流获取Excel文件,文件路径写自己的XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("D:\\WORKSPACE-Java\\normal-project\\Apache_POI_test\\files\\info.xlsx")));//获取sheet页XSSFSheet sheet = excel.getSheet("user");//获取最后一行有内容的行号,用于后期遍历,行号从0开始,列号从1开始int lastRowNum = sheet.getLastRowNum();//System.out.println("最后一行的行号:" + lastRowNum);for (int i = 0; i <= lastRowNum; i++) {//获取行XSSFRow row = sheet.getRow(i);//获取有内容的最后一列的列号short lastCellNum = row.getLastCellNum();//System.out.println("最后一列的列号:" + lastRowNum);for (int j = 0; j < lastCellNum; j++) {System.out.print(row.getCell(j) + " ");}System.out.println();}//关闭流excel.close();}

http://www.ppmy.cn/devtools/37516.html

相关文章

2024爆火的AI设备Rabbit R1到底是什么?有人说它是AI的iPhone时刻,有人说它是套壳的安卓

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

【JavaEE初阶系列】——Servlet运行原理以及Servlet API详解

目录 &#x1f6a9;Servlet运行原理 &#x1f6a9;Servlet API 详解 &#x1f393;HttpServlet核心方法 &#x1f393;HttpServletRequest核心方法 &#x1f388;核心方法的使用 &#x1f534;获取请求中的参数 &#x1f4bb;query string &#x1f4bb;直接通过form表…

【busybox记录】【shell指令】tsort

目录 内容来源&#xff1a; 【GUN】【tsort】指令介绍 【busybox】【tsort】指令介绍 【linux】【tsort】指令介绍 使用示例&#xff1a; 常用组合指令&#xff1a; 指令不常用/组合用法还需继续挖掘&#xff1a; 内容来源&#xff1a; GUN &#xff1a; Coreutils - GN…

【RabbitMQ 二】RabbitMQ基本组成、交换器类型、RabbitMQ生产消费消息流程、信道Channel、AMQP协议

RabbitMQ入门 1.RabbitMQ基本组成 RabbitMQ有一些基本的组成单元&#xff1a; Producer&#xff1a;消息的生产者Consumer&#xff1a;消息的消费者Broker&#xff1a;RabbitMQ的服务节点。形象一点说就是一个Broker等同于一台RabbitMQ服务器&#xff0c;可以接收Producer的…

理解Oracle闪回级别【Oracle闪回技术】(一)

Oracle闪回技术是数据恢复技术&#xff0c;具有恢复时间快&#xff0c;不适用备份文件。可以使数据库回到某个状态。 可以满足用户的逻辑处理的快速恢复。 但是闪回技术只是逻辑数据恢复&#xff0c;如果是数据文件损坏&#xff0c;必须依赖介质才能恢复。 闪回技术的特性&…

Android Studio之ImageView

ImageView是图像显示控件&#xff0c;与图形显示有关的属性说明如下: scaleType&#xff1a;指定图形的拉伸类型&#xff0c;默认是fitCenter。src&#xff1a;指定图形来源&#xff0c;src图形按照scaleType拉伸。 注意背景图不按scaleType指定的方式拉伸&#xff0c;背景默…

使用DependencyCheck工具检测JAR依赖包的安全漏洞

引言 Dependency-Check 是一个开源工具,用于检测软件项目中使用的第三方库和组件是否存在已知的安全漏洞。它可以帮助开发团队及时发现和解决项目中的潜在安全风险,从而提高软件的安全性。 该工具通过分析项目的依赖关系,识别其中使用的第三方库和组件,并与已知的漏洞数据…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行&#xff0c;建议电脑配置…