1. 程式人生 > 其它 >poi讀取和寫入

poi讀取和寫入

本章講解如何使用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 = 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); //獲取行物件 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();
    }