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


文章目录
Apache POI 是一个处理 Miscrosoft Office 各种文件格式的开源项目。简单来说就是,开源使用 POI 在 Java 程序中对 Miscrosoft Office 各种文件进行读写操作。
一般情况下, POI 都是用于操作 Excel 文件。
首先添加 Apache POI 依赖:
- <dependency>
- <groupId>org.apache.poigroupId>
- <artifactId>poiartifactId>
- <version>3.16version>
- dependency>
- <dependency>
- <groupId>org.apache.poigroupId>
- <artifactId>poi-ooxmlartifactId>
- <version>3.16version>
- 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);
- 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();
- }
- }
运行结果:
首先需要添加 POI 库的依赖,在前面写入 Excel 文件中已经添加了,这里就没有必要继续添加依赖了。
- <dependency>
- <groupId>org.apache.poigroupId>
- <artifactId>poiartifactId>
- <version>3.16version>
- dependency>
- <dependency>
- <groupId>org.apache.poigroupId>
- <artifactId>poi-ooxmlartifactId>
- <version>3.16version>
- 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();
- 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();
- }
运行结果:
