使用 Apache POI 更新特定的单元格
- 一. 需求
- 二. 实现
- 三. 效果
一. 需求
将以下表中第4行,第4列的单元格由“张宇”更新为“汤家凤”,并将更行后的结果写入新的Excel文件中;
二. 实现
使用Apache POI,可以精确定位到需要更改的单元格!高定制化的场景有时可能不适合用easyExcel;
步骤:
- 由 file 依次 获取 workbook、sheet、row、cell;
- 更新 cell;
- 关闭 输入流,用新文件的path创建输出流;
- 将更改后的 workbook 通过输出流 写入 新文件;
- 关闭 workbook和输出流。
import org.apache.poi.xssf.usermodel.*; import org.junit.Test; import java.io.*; public class poiTest { @Test public void update() throws Exception{ String sourceFile = "C:\Users\liziq\Desktop\student.xlsx"; // 原文件 String newFile = "C:\Users\liziq\Desktop\student-new.xlsx"; // 更新后的新文件 // 创建输入流 FileInputStream fileInputStream = new FileInputStream(sourceFile); // 获取 workbook XSSFWorkbook wb = new XSSFWorkbook(fileInputStream); // 获取 sheet XSSFSheet sheet = wb.getSheetAt(0); // 获取单元格(index是从0开始) XSSFRow row = sheet.getRow(3); XSSFCell cell = row.getCell(3); // 更新单元格 cell.setCellValue("汤家凤"); // 关闭输入流 fileInputStream.close(); // 创建输出流 FileOutputStream fileOutputStream=new FileOutputStream(newFile); // 将 workbook 写入 newFile wb.write(fileOutputStream); // 关闭workbook和输出流 wb.close(); fileOutputStream.close(); } }
三. 效果
生成“student-new.xlsx”,教高数的变成了“汤家凤”!
参考:
https://blog.csdn.net/zouxiongqqq/article/details/78478298