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

Apache POI对Excel进行读写操作

1、什么是Apache POI

​ Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。

image-20240531085649680

Apache POI 的应用场景:

  • 银行网银系统导出交易明细

  • 各种业务系统导出Excel报表

  • 批量导入业务数据

2、简单使用Apache POI

Apache POI既可以将数据写入Excel文件

使用之前需要在项目的pom.xml文件中添加Apache 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>
2.1、将数据写入Excel文件

实现效果

image-20240531143237595

代码实现

    /*** 写入excel* @throws Exception*/@Testpublic void testWrite() throws Exception {//创建excel文件并写入磁盘//创建一个内存的excel文件对象XSSFWorkbook workbook = new XSSFWorkbook();//创建一个工作表 XSSFSheetXSSFSheet sheet = workbook.createSheet("demo");//创建数据 XSSRow,行号从0开始XSSFRow row = sheet.createRow(0);//根据XSSRow创建单元格并写入数据,单元格从0开始row.createCell(1).setCellValue("姓名");row.createCell(2).setCellValue("爱好");row = sheet.createRow(1);row.createCell(1).setCellValue("小林");row.createCell(2).setCellValue("编程");//创建文件输出流,保存到磁盘FileOutputStream fileInputStream = new FileOutputStream("d:/file/demo.xlsx");//将excel文件给到输出流保存workbook.write(fileInputStream);//关闭流workbook.close();}
3、读取Excel文件中的数据

实现效果

image-20240531143509553

代码实现

    /*** 读取excel*/@Testpublic void testRead() throws Exception {//读取excel//创建文件输入流FileInputStream fileInputStream = new FileInputStream("d:/file/demo.xlsx");//创建内存excel文件XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileInputStream);//根据XSSFWordbook对象,获取工作表对象XSSFSheet sheet = xssfWorkbook.getSheet("demo");//获取最后一行行号int lastRowNum = sheet.getLastRowNum();//遍历读取for (int i = 0; i <= lastRowNum; i++) {XSSFRow row = sheet.getRow(i);String cellValueOne = row.getCell(1).getStringCellValue();String cellValueTwo = row.getCell(2).getStringCellValue();System.out.println(cellValueOne + " " + cellValueTwo);}//关闭流fileInputStream.close();xssfWorkbook.close();}

相关文章:

  • 【Python Cookbook】S1E08 在两个字典中寻找相同点
  • springboot kafka 提高拉取数量
  • Kamailio dialog timeout
  • 【设计模式】创建型-建造者模式
  • oracle mysql索引区别
  • 微信小程序-页面导航
  • 流量回放平台与传统测试工具的对比分析
  • MySQL复合查询操作【 函数接口集合 | 多表查询 | 子查询 | 表的内连外连】
  • 在Github找自己想要的的项目
  • 基于VGG16使用图像特征进行迁移学习的时装推荐系统
  • 安卓手机APP开发___广播概述
  • Java反射实战指南:反射机制的终极指南
  • NeuralForecast 推理 - 从csv文件里读取数据进行推理
  • Kafka 请求处理揭秘:从入门到精通
  • 小程序vant DropdownMenu 下拉菜单无法关闭
  • [译] React v16.8: 含有Hooks的版本
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • java 多线程基础, 我觉得还是有必要看看的
  • magento 货币换算
  • php面试题 汇集2
  • python学习笔记 - ThreadLocal
  • Spring Boot快速入门(一):Hello Spring Boot
  • SpringCloud集成分布式事务LCN (一)
  • springMvc学习笔记(2)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 阿里研究院入选中国企业智库系统影响力榜
  • 分享一份非常强势的Android面试题
  • 回顾2016
  • 解决iview多表头动态更改列元素发生的错误
  •  一套莫尔斯电报听写、翻译系统
  • 应用生命周期终极 DevOps 工具包
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #mysql 8.0 踩坑日记
  • #QT(TCP网络编程-服务端)
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (5)STL算法之复制
  • (C语言)共用体union的用法举例
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)springcloud实战之config配置中心
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)模仿学习-Action数据的模仿
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • .NET C# 操作Neo4j图数据库
  • .NET Core中如何集成RabbitMQ
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET中统一的存储过程调用方法(收藏)
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @ModelAttribute注解使用
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘