有没有办法锁定某些单元格不被用户编辑?我尝试了以下方法:
WritableCellFormat cf = new WritableCellFormat();
cf.setLocked(true);
sheet.addCell(new Number(col, row, value, cf));
但是,这似乎对生成的电子表格没有任何影响,即在 Excel 中打开文件时,仍可以更改单元格内容。
您必须为每张纸“激活”保护。我不确定这应该怎么做。我找到的方法是
sheet.setProtected(true);
但显然这种方法不再推荐。所以你可能应该尝试找到一些更新的。
编辑:对不起,我的错误。这会锁定工作表中的每个单元格。
编辑2:如果您锁定整个工作表然后解锁可编辑单元格,它对我有用。
sheet.getSettings().setProtected(true);
WritableCellFormat unlocked = new WritableCellFormat();
unlocked.setLocked(false);
Label l = new Label(0, 0, "", unlocked);
sheet.addCell(l);
以下是在不使用已接受答案中已弃用的方法的情况下保护单元格的一般步骤
1. 创建一个 WritableCellFormat 对象并将锁定设置为 false
2. 添加要解锁的单元格时,请在 addCell(. ..) 方法调用
3. 在工作表上调用 getSettings 以获取 SheetSettings 对象并调用 setProtected(true) 以保护工作表,并通过扩展保护单元格,默认情况下在 excel 中是所有单元格。
WritableCellFormat cellFormat = new WritableCellFormat();
cellFormat.setLocked(false)
WritableSheet sheet = Worksheet.createSheet();
//Create a cell that is protected and a cell that is not protected
sheet.addCell(new Label(col1, row, "My Locked Cell");
sheet.addCell(new Label(col2, row, "My Unlocked Cell", cellFormat);
//Protect the sheet so that locked cells are locked and unlocked cells are unlocked
sheet.getSettings().setProtected(true);
在较新的版本中,您应该这样做
sheet.protectSheet("password");
注意到模板文件也应该在首选项中受到保护。否则,在 LibreOffice 中保护对我来说无法正常工作,工作表看起来像“挂起”,您甚至无法单击单元格。明确提出受保护的已解决问题,但您应该切换“使用受保护的单元格”或类似的复选框。PS我用密码做了保护,但最终文件中没有使用(密码来自代码)