使用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 followingWorkbookconstants:Workbook.SHEET_STATE_VISIBLE,Workbook.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對象從新寫成文件(覆蓋原來的文件),這樣所做的修改才起作用!
