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对象从新写成文件(覆盖原来的文件),这样所做的修改才起作用!

转载于:https://www.cnblogs.com/shipeng22022/p/4614005.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值