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();

 

四:結果

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM