POI刪除Excel的sheet頁
poi有刪除一個sheet頁的方法,我希望除了一個sheet頁之外其他的都刪除,但是使用的時候發現,刪除之后經常會出現文件破壞的提示,研究發現,是由於excel有一個默認的當前頁功能。
比如表格中有3個sheet頁,保存的時候默認顯示的是第三頁,那么刪除兩頁之后,表格只剩一頁,打開的時候表格會顯示第三頁失敗,就會提示文件損壞。。
遇到這種情況,有兩種方法:
- 將表格默認顯示的頁改為第一頁再處理
- 使用代碼修改默認頁。
此方法刪除表格中除了傳入的頁之外所有的頁
/**
* 刪除模板表格(除了 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);
}