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

时间:2010-07-19 07:40:25

标签: java jxl

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

WritableCellFormat cf = new WritableCellFormat();
cf.setLocked(true);
sheet.addCell(new Number(col, row, value, cf));

但是,这似乎对生成的电子表格没有任何影响,即在Excel中打开文件时仍可以更改单元格内容。

3 个答案:

答案 0 :(得分:5)

你必须为每张纸“激活”保护。我不应该知道应该怎么做。我找到的方法是

sheet.setProtected(true);

但显然不再推荐这种方法。所以你应该尝试找一些新的。

编辑: 抱歉,是我的错。这会锁定工作表中的每个单元格。

编辑2: 如果你锁定entiry表然后解锁可编辑的单元格,它对我有用。

sheet.getSettings().setProtected(true);
WritableCellFormat unlocked = new WritableCellFormat();
unlocked.setLocked(false);
Label l = new Label(0, 0, "", unlocked);
sheet.addCell(l);

答案 1 :(得分:2)

以下是在不使用accepted answer的弃用方法的情况下保护单元格的一般步骤 1.创建WritableCellFormat对象并将locked设置为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);

答案 2 :(得分:0)

在较新版本中,您应该这样做

sheet.protectSheet("password");

忽略了模板文件也应该受到保护。否则,在LibreOffice中,保护功能对我而言无法正常工作,工作表看起来像“被吊死”,您甚至无法单击单元格。明确提出了受保护的问题,但是您应该选中“使用受保护的单元”或类似的复选框。 附言我使用密码进行了保护,但未在最终文件中使用(密码来自代码)