Java 锁定JXL生成的Excel文档中的单元格

Java 锁定JXL生成的Excel文档中的单元格,java,jxl,Java,Jxl,有没有办法锁定用户编辑的某些单元格?我尝试了以下方法: WritableCellFormat cf = new WritableCellFormat(); cf.setLocked(true); sheet.addCell(new Number(col, row, value, cf)); 但是,这似乎对生成的电子表格没有任何影响,即在Excel中打开文件时,单元格内容仍然可以更改。您必须为每张工作表“激活”保护。我不是舒尔,这到底应该怎么做。我找到的方法是 sheet.setProtecte

有没有办法锁定用户编辑的某些单元格?我尝试了以下方法:

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(…)方法调用中包括WritableCellFormat
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中的保护就不能正常工作,工作表看起来像“挂起”,你们甚至不能点击手机。显式地使受保护的问题得到解决,但您应该切换“使用受保护的单元格”或类似smth的复选框。 另外,我用密码进行了保护,但它并没有在最终文件中使用(密码来自代码)

谢谢,这很有效!(虽然显式定义未锁定的单元格有点不方便,因为我通常只有一个或两个要锁定的单元格)