Java操作Excel,设置某些单元格不可编辑(HSSFWorkbook ,XSSFWorkbook )

 小白的总结,大神勿喷;需要转载请说明出处,如果有什么问题,欢迎留言

一、需求:

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

 

四:结果

 技术分享图片

 

 技术分享图片

 

文章来自:https://www.cnblogs.com/minxl/p/10170806.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3