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

SpringBootWeb 篇-入门了解 Apache POI 使用方法

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 Apache POI 概述

        2.0 使用 Apache POI 读写 Excel 文件

        2.1 写入 Excel 文件

        2.2 写入 Excel 文件代码演示

        2.3 读取 Excel 文件

        2.4 读取 Excel 文件代码演示


        1.0 Apache POI 概述

        Apache POI 是一个处理 Miscrosoft Office 各种文件格式的开源项目。简单来说就是,开源使用 POI 在 Java 程序中对 Miscrosoft Office 各种文件进行读写操作。

        一般情况下, POI 都是用于操作 Excel 文件。

        2.0 使用 Apache POI 读写 Excel 文件

        2.1 写入 Excel 文件

        首先添加 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>

具体用到的方法:

        1)创建 XSSFWorkbook对象:

        使用 XSSFWorkbook 创建 XLSX 格式的 Excel 文件。

Workbook workbook = new XSSFWorkbook();

        2)创建工作表对象:

Sheet sheet = workbook.createSheet("Sheet1"); // 创建新的工作表

        3)创建行和单元格对象:

Row row = sheet.createRow(0); // 创建新的行
Cell cell = row.createCell(0); // 创建新的单元格

        4)设置具体的值:

cell.setCellValue("Hello, World!");//在单元格中写入的内容

        5)将在内存创建的 Excel 的文件保存到磁盘中:

FileOutputStream file = new FileOutputStream("example.xlsx");
workbook.write(file);

        2.2 写入 Excel 文件代码演示

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;@SpringBootTest(classes = {demo.demo2.class})public class demo2 {/*** 写入 Excel 文件操作*/public void write() throws IOException {//创建 XSSFWorkbook 对象XSSFWorkbook workbook = new XSSFWorkbook();//创建 Sheet 对象,指定名称 sheet1XSSFSheet sheet = workbook.createSheet("sheet1");//创建行,创建第二行的行对象XSSFRow row = sheet.createRow(1);//创建单元格,创建第二格单元格对象XSSFCell cell = row.createCell(1);//设置具体的值cell.setCellValue("姓名");//创建单元格,创建第三格单元格对象XSSFCell cell1 = row.createCell(2);//设置具体的值cell1.setCellValue("性别");//创建第三行对象XSSFRow row1 = sheet.createRow(2);//创建第二格对象XSSFCell cell2 = row1.createCell(1);cell2.setCellValue("小板");//创建第三格对象XSSFCell cell3 = row1.createCell(2);cell3.setCellValue("男");//创建第四行对象XSSFRow row2 = sheet.createRow(3);//创建第二格对象XSSFCell cell4 = row2.createCell(1);//设置具体的值cell4.setCellValue("童童");//创建第三格对象XSSFCell cell5 = row2.createCell(2);cell5.setCellValue("女");//将该 Excel 从内存中放到磁盘中//首先创建存放的文件FileOutputStream out = new FileOutputStream(new File("D:\\software\\code\\example.xlsx"));workbook.write(out);//最后需要关闭资源out.close();workbook.close();}@Testpublic void test11() throws IOException {write();}
}

运行结果:

        2.3 读取 Excel 文件

        首先需要添加 POI 库的依赖,在前面写入 Excel 文件中已经添加了,这里就没有必要继续添加依赖了。

<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>

相关的方法:

        1)指定读取的 Excel 文件:

        通过 new File("路径") Flie 对象作为参数来指定要读取的 Excel 文件。

FileInputStream file = new FileInputStream(new File("sample.xlsx"));
Workbook workbook = WorkbookFactory.create(file);

        2)获取 Sheet 对象:

        根据索引或者名字来获取指定的 Sheet 对象。

//通过名字来获取
XSSFSheet sheet1 = workbook.getSheet("指定名字来获取");
//通过索引来获取
XSSFSheet sheet2 = workbook.getSheetAt(0);

        3)获取 Row 对象

        根据索引来获取 Row 对象。

XSSFRow row = sheet.getRow(1);

        获取 Sheet 最后一行的行数。

int lastRowNum = sheet.getLastRowNum();

        4)获取单元格对象

        根据索引来获取 Cell 对象。

XSSFCell cell = row.getCell(1);

        5)获取到单元格中的值

        通过 cell.getStringCellValue() 方法来获取单元格中的值。

String stringCellValue = cell.getStringCellValue();

        2.4 读取 Excel 文件代码演示

    public void read() throws Exception {//创建字节输入流文件对象File file = new File("D:\\software\\code\\example.xlsx");FileInputStream in = new FileInputStream(file);//再进一步封装XSSFWorkbook workbook = new XSSFWorkbook(in);//获取 Sheet 对象,根据索引获取XSSFSheet sheet = workbook.getSheetAt(0);//获取Row对象//获取最后一行的行数int lastRowNum = sheet.getLastRowNum();for (int i = 1; i <= lastRowNum ; i++) {XSSFRow row = sheet.getRow(i);String stringCellValue1 = row.getCell(1).getStringCellValue();String stringCellValue2 = row.getCell(2).getStringCellValue();System.out.println(stringCellValue1 + " " + stringCellValue2);}//最后关闭资源workbook.close();in.close();}@Testpublic void test12() throws Exception {read();}

运行结果:

相关文章:

  • Docker配置代理
  • 【C语言】排序算法 -------- 计数排序
  • 课时158:脚本发布_简单脚本_远程执行
  • 线程相关的基本方法
  • 什么是内存泄漏?如何避免?
  • Android --- 异步操作
  • vscode插件开发之 - 消息通信
  • Apache HttpClient总览
  • QSS/QFrame/connect/两个窗口界面的连接/窗口的优化
  • DoIP——step2:车辆发现
  • 内网穿透的原理:实现远程访问的技术揭秘
  • Aeron:两个代理之间的单向IPC(One-way IPC between two agents)
  • visual studio下载安装
  • 【MySQL基础随缘更系列】AB复制
  • 你是否感受到AI就在身边?
  • Google 是如何开发 Web 框架的
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • exports和module.exports
  • log4j2输出到kafka
  • miaov-React 最佳入门
  • npx命令介绍
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聊聊redis的数据结构的应用
  • 算法---两个栈实现一个队列
  • 原生js练习题---第五课
  • 运行时添加log4j2的appender
  • 正则表达式小结
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # C++之functional库用法整理
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (一)SpringBoot3---尚硅谷总结
  • (转) 深度模型优化性能 调参
  • **python多态
  • ./configure,make,make install的作用(转)
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @RestControllerAdvice异常统一处理类失效原因
  • @Service注解让spring找到你的Service bean
  • @Transient注解
  • [100天算法】-x 的平方根(day 61)
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改