Apache 如何锁定XSSF工作簿中的特定单元格,以便用户无法编辑该单元格
我正在使用ApachePOI读写XSSF工作簿Apache 如何锁定XSSF工作簿中的特定单元格,以便用户无法编辑该单元格,apache,apache-poi,xssf,Apache,Apache Poi,Xssf,我正在使用ApachePOI读写XSSF工作簿 点击一个按钮,需要生成一个包含5张工作表的XSSF工作簿文件,.xlsm扩展名有50列,其中我填充了4列。。。。现在,一旦这个文件保存在用户系统中,我的代码填充的这4列数据应该是不可编辑的严格来说,只有这4列,其余的46列用户应该能够编辑数据。如何做到这一点???我可以使用最新的Apache POI您需要将单元格样式设置为锁定或解锁,并保护工作表。锁定工作表将默认所有单元格为只读 XSSFWorkbook workbook = new XSSFWo
点击一个按钮,需要生成一个包含5张工作表的XSSF工作簿文件,.xlsm扩展名有50列,其中我填充了4列。。。。现在,一旦这个文件保存在用户系统中,我的代码填充的这4列数据应该是不可编辑的严格来说,只有这4列,其余的46列用户应该能够编辑数据。如何做到这一点???我可以使用最新的Apache POI您需要将单元格样式设置为锁定或解锁,并保护工作表。锁定工作表将默认所有单元格为只读
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = (XSSFSheet)workbook.createSheet("worksheet");
sheet.protectSheet("password");
CellStyle lockedStyle = workbook.createCellStyle();
lockedStyle.setLocked(true);
CellStyle defaultStyle = workbook.createCellStyle();
defaultStyle.setLocked(false);
// Create a header row
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("locked");
cell.setCellStyle(lockedStyle);
sheet.autoSizeColumn(0);
cell = row.createCell(1);
cell.setCellValue("this cell unlocked");
cell.setCellStyle(defaultStyle);
sheet.autoSizeColumn(1);
cell = row.createCell(2);
cell.setCellValue("this column unlocked");
cell.setCellStyle(defaultStyle);
sheet.autoSizeColumn(2);
// sets any auto-generated cells in this column to unlocked
sheet.setDefaultColumnStyle(2, defaultStyle);
FileOutputStream fileOut = new FileOutputStream("doc.xlsx");
workbook.write(fileOut);
workbook.close();
fileOut.close();