1. 程式人生 > >Java poi匯出設定 Excel某些單元格不可編輯

Java poi匯出設定 Excel某些單元格不可編輯

 小白的總結,大神勿噴;需要轉載請說明出處,如果有什麼問題,歡迎留言

一、需求:

1、某一列 、某一行或某些單元格不可編輯,其他列可以編輯

二、期間遇到的問題

1、無法設定成不可編輯

2、設定為不可編輯,匯出後發現所有單元格均不可編輯;

原因:createCell();建立單元格後,單元格預設是鎖定狀態;protectSheet("密碼");保護工作表是保護所有鎖定的單元格;

三、解決問題

       不多BB,直接上程式碼

     HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet 
= wb.createSheet("sheet名稱"); HSSFCellStyle lockstyle = wb.createCellStyle(); lockstyle.setLocked(true);//設定鎖定 lockstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); lockstyle.setFillForegroundColor(IndexedColors.RED.getIndex());//設定上鎖的單元格背景色 HSSFCellStyle unlockStyle
=wb.createCellStyle(); unlockStyle.setLocked(false);//設定未鎖定 for(int i=0;i<10;i++){ HSSFRow row = sheet.createRow(i); for (int j = 0; j < 10; j++) { HSSFCell cell = row.createCell(j); cell.setCellStyle(unlockStyle);
//預設是鎖定狀態;將所有單元格設定為:未鎖定;然後再對需要上鎖的單元格單獨鎖定 if(j==1){//這裡可以根據需要進行判斷;我這就將第2列上鎖了 cell.setCellStyle(lockstyle);//將需要上鎖的單元格進行鎖定 cell.setCellValue("上鎖了"); }else{ cell.setCellValue("沒上鎖了"); } } } //sheet新增保護,這個一定要否則光鎖定還是可以編輯的 sheet.protectSheet("123456"); FileOutputStream os = new FileOutputStream("D:\\workbook.xls"); wb.write(os); os.close();

 

四:結果