POI操作Excel:隱藏、刪除Excel中指定的Sheet


使用POI操作Excel時如何隱藏、刪除Excel中指定的Sheet呢?在POI的API中的HSSFWorkbook類提供了相關的方法,

(1)隱藏Sheet:

      setSheetHidden(int sheetIx, boolean hidden); 
     sheetIx – the sheet index (0-based)

     hidden – True to mark the sheet as hidden, false otherwise


   setSheetHidden(int sheetIx, int hidden);

    sheetIx – the sheet index (0-based)

    hidden  – one of the following Workbook constants:Workbook.SHEET_STATE_VISIBLEWorkbook.SHEET_STATE_HIDDEN, orWorkbook.SHEET_STATE_VERY_HIDDEN. 
    0 – visible / 1 – hidden / 2 – very hidden.

(2)刪除Sheet: 
    removeSheetAt(int sheetId)

        index – of the sheet (0-based)


  Java代碼:

      /** 
     * 隱藏指定的Sheet 
     * @param targetFile  目標文件 
     * @param sheetName   Sheet名稱 
     */ 
    public void hiddenSheet(String targetFile,String sheetName) { 
        try { 
            FileInputStream fis = new FileInputStream(targetFile); 
            HSSFWorkbook wb = new HSSFWorkbook(fis); 
            //隱藏Sheet 
            wb.setSheetHidden(wb.getSheetIndex(sheetName), 1); 
            this.fileWrite(targetFile, wb); 
            fis.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
    
    /** 
     * 刪除指定的Sheet 
     * @param targetFile  目標文件 
     * @param sheetName   Sheet名稱 
     */ 
    public void deleteSheet(String targetFile,String sheetName) { 
        try { 
            FileInputStream fis = new FileInputStream(targetFile); 
            HSSFWorkbook wb = new HSSFWorkbook(fis); 
            //刪除Sheet 
            wb.removeSheetAt(wb.getSheetIndex(sheetName)); 
            this.fileWrite(targetFile, wb); 
            fis.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
    
    /** 
     * 寫隱藏/刪除后的Excel文件 
     * @param targetFile  目標文件 
     * @param wb          Excel對象 
     * @throws Exception 
     */ 
    public void fileWrite(String targetFile,HSSFWorkbook wb) throws Exception{
        FileOutputStream fileOut = new FileOutputStream(targetFile); 
        wb.write(fileOut); 
        fileOut.flush(); 
        fileOut.close(); 
    }

   調用測試:

   public static void main(String[] args) { 
        ExcelWrite ew = new ExcelWrite(); 
        ew.deleteSheet("d:/test.xls", "template1");

        ew.hiddenSheet("d:/test.xls", "template2"); 
    }

    隱藏、刪除Sheet之后必須將HSSFWorkbook對象從新寫成文件(覆蓋原來的文件),這樣所做的修改才起作用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM