JAVA操作Excel表格部分不可编辑部分可编辑

一、需求:

1、某一列 、某一行或某些单元格不可编辑,其他列可以编辑

二、期间遇到的问题

1、无法设置成不可编辑

2、设置为不可编辑,导出后发现所有单元格均不可编辑;

原因:createCell();创建单元格后,单元格默认是锁定状态;protectSheet(“密码”);保护工作表是保护所有锁定的单元格;
解决:创建不需要保护的列设置为 unlockStyle.setLocked(false);//设置未锁定

三、解决问题

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

四:结果

JAVA操作Excel表格部分不可编辑部分可编辑

JAVA操作Excel表格部分不可编辑部分可编辑
原文:http://www.bubuko.com/infodetail-2896152.html