poi讀取和寫入
阿新 • • 發佈:2021-06-29
本章講解如何使用poi對excel檔案的讀取和寫入
1、在pox.xml檔案中匯入依賴:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency>
如果去maven倉庫搜尋,請看一下選擇
2、獲取指定單元格
FileInputStream fis = newFileInputStream("src\\main\\resources\\test.xlsx"); //獲取Workbook物件 Workbook workbook = WorkbookFactory.create(fis); //獲取Sheet物件,getSheetAt(索引):是根據索引獲取sheet,getSheet("sheet名稱"):根據sheet名稱獲取sheeet Sheet sheetAt = workbook.getSheetAt(0); //獲取行物件 Row row = sheetAt.getRow(1); //獲取單元格物件 Cell cell = row.getCell(1); //把單元格的型別轉換為String的,不然是其他型別的獲取會報錯 cell.setCellType(CellType.STRING); String stringCellValue = cell.getStringCellValue();
fis.close();
3、迴圈取全部的
FileInputStream fis = new FileInputStream("src\\main\\resources\\test.xlsx"); //獲取Workbook物件 Workbook workbook = WorkbookFactory.create(fis); //獲取Sheet物件,getSheetAt(索引):是根據索引獲取sheet,getSheet("sheet名稱"):根據sheet名稱獲取sheeet Sheet sheetAt = workbook.getSheetAt(0); //獲取最後一行的下標 int lastRowNum = sheetAt.getLastRowNum(); for (int i = 0; i < lastRowNum; i++){ Row row = sheetAt.getRow(i); //獲取當前行的最後一個單元格的下標 short lastCellNum = row.getLastCellNum(); for (int j = 0; j < lastCellNum; j++){ Cell cell = row.getCell(j); cell.setCellType(CellType.STRING); String stringCellValue = cell.getStringCellValue(); System.out.println(stringCellValue); } }
fis.close();
4、對指定單元格的內容進行修改後回寫到本檔案,也可以存草其他檔案。如果檔案不存在則建立,如果檔案存在則先清空資料
FileInputStream fis = new FileInputStream("src\\main\\resources\\test.xlsx"); //獲取Workbook物件 Workbook workbook = WorkbookFactory.create(fis); //先把資源關閉,不然會一直佔用資源, fis.close(); //獲取Sheet物件,getSheetAt(索引):是根據索引獲取sheet,getSheet("sheet名稱"):根據sheet名稱獲取sheeet Sheet sheetAt = workbook.getSheetAt(0); Row row = sheetAt.getRow(1); Cell cell = row.getCell(1); //對單元格進行判斷,如果單元格的內容為空會報空指標異常 if (cell == null){ cell = row.createCell(1); cell.setCellValue("test"); }else { cell.setCellValue("test"); } FileOutputStream fos = new FileOutputStream("src\\main\\resources\\test.xlsx"); workbook.write(fos); fos.close(); }