近段時間做一個excel的導出功能,在網上查詢了很多方法,發現都很難解決我目前的困難,偶爾查詢到POI修改sheetname這個問題,有了解決方法
以下為參考鏈接及本人部分代碼
參考地址:https://blog.csdn.net/qq_42835445/article/details/87981861
如有侵權,請聯絡刪除,謝謝
部分代碼及注釋:
//因為有excel模板,但又不想直接在模板上進行操作,所以先獲取文件流信息,模板為xlsx,請自行修改
//使用文件路徑讀入文件流,因為我的是模板,我是知道路徑的
FileInputStream fis = new FileInputStream("src/main/resources/template/ScheduleModel.xlsx");
//創建一個新的excel並讀入文件流,讀取之后記得關閉流
XSSFWorkbook wk = new XSSFWorkbook(fis);
fis.close();
// 模板內容已經寫入了新建的excel,第一個sheet為模板sheet
XSSFSheet fromsheet = wk.getSheetAt(0);
// 新表創建sheet
XSSFSheet sheet = null;
XSSFRow row = null;
//之后就是新文件之內的sheet操作了,要根據模板sheet創建新sheet,直接克隆就可以了
int sheetNum = 1;
sheet = wk.cloneSheet(0);//克隆第一個sheet,因為我后續要對克隆的sheet直接進行操作,所以就直接這樣寫了
sheetNum++;//獲取sheet頁數量,也可以使用原生方法int sheetNum = wk.getNumberOfSheets();
wk.setSheetName(sheetNum-1, sheetname);//修改新生成的sheet頁名稱
以上就是代碼部分了,可以自行追加邏輯來確認是否克隆新的sheet,
這個方法比起字節流一行一行讀方便很多,唯一的問題是沒辦法對內容進行篩選。
但如果僅是對模板進行操作,這種方法是我找到的最方便的了,如果有其他方案,可以發給我,謝謝。
