🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍
文章目录
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 对象,指定名称 sheet1 XSSFSheet 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(); } @Test public 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(); } @Test public void test12() throws Exception { read(); }
运行结果: