小白的总结,大神勿喷;需要转载请说明出处,如果有什么问题,欢迎留言
一、需求:
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();
四:结果