小白的总结,大神勿喷;须要转载请说明出处,若是有什么问题,欢迎留言spa
1、需求:3d
一、某一列 、某一行或某些单元格不可编辑,其余列能够编辑code
2、期间遇到的问题blog
一、没法设置成不可编辑get
二、设置为不可编辑,导出后发现全部单元格均不可编辑;it
缘由:createCell();建立单元格后,单元格默认是锁定状态;protectSheet("密码");保护工做表是保护全部锁定的单元格;class
3、解决问题密码
很少BB,直接上代码im
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();
四:结果
总结