POI刪除Excel的sheet頁


POI刪除Excel的sheet頁

poi有刪除一個sheet頁的方法,我希望除了一個sheet頁之外其他的都刪除,但是使用的時候發現,刪除之后經常會出現文件破壞的提示,研究發現,是由於excel有一個默認的當前頁功能。

比如表格中有3個sheet頁,保存的時候默認顯示的是第三頁,那么刪除兩頁之后,表格只剩一頁,打開的時候表格會顯示第三頁失敗,就會提示文件損壞。。

遇到這種情況,有兩種方法:

  1. 將表格默認顯示的頁改為第一頁再處理
  2. 使用代碼修改默認頁。

此方法刪除表格中除了傳入的頁之外所有的頁

    /**
     * 刪除模板表格(除了 id之外所有的)
     */
    public static void removeModelSheet(Workbook wb, int id) {
        int numberOfSheets = wb.getNumberOfSheets();
        for (int i = numberOfSheets - 1; i > -1; i--) {
            if (i != id) {
                wb.removeSheetAt(i);
            }
        }
        //設置默認顯示第一頁
        wb.setActiveSheet(0);
    }
    /**
     * 刪除模板表格(除了 name之外所有的)
     */
    public static void removeModelSheet(Workbook wb, String name) {
        int sheetIndex = wb.getSheetIndex(wb.getSheet(name));
        removeModelSheet(wb,sheetIndex);
    }
    /**
     * 刪除模板表格(除了 noDelSheet之外所有的)
     */
    public static void removeModelSheet(Workbook wb, Sheet noDelSheet) {
        int sheetIndex = wb.getSheetIndex(noDelSheet);
        removeModelSheet(wb,sheetIndex);
    }


免責聲明!

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



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