1. 介绍
Apache POI 是一个处理 Miscrosoft Office 各种文件格式的开源 Java 库。我们可以使用 POI 在 Java 程序中对 Miscrosoft Office 各种文件进行读写操作。
一般情况下,POI 都是用于操作 Excel 文件。
Apache POI 的应用场景:
-
银行网银系统导出交易明细
-
各种业务系统导出Excel报表
-
批量导入业务数据
2. 使用案例
Apache POI 既可以将数据写入 Excel 文件,也可以读取 Excel 文件中的数据,接下来分别进行实现。
引入 Apache POI 的 maven 坐标:
1 2 3 4 5 6 7 8 9 10
| <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 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| @Slf4j public class POITest { public static void main(String[] args) throws IOException { write(); }
public static void write() throws IOException { XSSFWorkbook sheets = new XSSFWorkbook(); XSSFSheet sheet = sheets.createSheet("info"); XSSFRow row = sheet.createRow(0); row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("城市"); row = sheet.createRow(1); row.createCell(0).setCellValue("张三"); row.createCell(1).setCellValue("北京"); row = sheet.createRow(2); row.createCell(0).setCellValue("李四"); row.createCell(1).setCellValue("南京"); FileOutputStream fileOutputStream = new FileOutputStream("D://info.xlsx"); sheets.write(fileOutputStream); log.info("写出Excel文件到磁盘: {}", sheets); } }
|
2.2 读取 Excel 文件中的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| @Slf4j public class POITest { public static void main(String[] args) throws IOException { read(); }
public static void read() throws IOException { FileInputStream fileInputStream = new FileInputStream("D://info.xlsx"); XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream); XSSFSheet sheet = sheets.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); for (int i = 0; i <= lastRowNum; i++) { XSSFRow row = sheet.getRow(i); String stringCellValue1 = row.getCell(0).getStringCellValue(); String stringCellValue2 = row.getCell(1).getStringCellValue(); System.out.println(stringCellValue1 + "\t" + stringCellValue2); } sheets.close(); fileInputStream.close(); log.info("读取Excel文件: {}", sheets); } }
|