如何使用POI锁定Excel工作表中的数据,使单元格没有任何数据/其余部分解锁

时间:2014-08-10 15:21:07

标签: java excel apache-poi

我正在尝试锁定Excel工作表中的数据,以便无法编辑已写入工作表的数据,但可以将剩余的空白空间留给编辑/添加更多数据。

我尝试使用下面提供的代码尝试设置单元格样式,但是它只是相关的代码,但它不起作用,这同意这个已经问过的问题

Lock single column in Excel using Apache POI

XSSFCellStyle lockCell = getFileWriter().getWorkbook().createCellStyle();
lockCell.setLocked(true);
for(Row row : sheet){
    for(Cell mycell : row){
        mycell.setCellStyle(lockCell);
    }
}
相反的是:通过锁定整个工作表并设置相关的行'细胞风格解锁,我试过,但没有任何数据的细胞不解锁,所以它没有为我工作。在任何情况下,应该解释单元格的距离和宽度,因为不知道需要多少空间来添加未知数量的数据。

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

如果之前未显式创建单元格,则行的迭代器将不返回单元格。要解锁单元格,必须将其明确设置为未锁定的样式。据我所知,无法更改默认值。 因此,我看到的唯一方法是为每一行创建单元格,直到某个列索引。

答案 1 :(得分:0)

要解锁没有数据的单元格,假设您的工作表受到保护,您必须使用setDefaultColumnStyle方法设置要解锁的列的默认样式。

在您的情况下,您必须执行以下操作:

CellStyle editableStyle = workbook.createCellStyle();
editableStyle.setLocked(false);

for (int i = 0; i < numColumns; i++) {
   sheet.setDefaultColumnStyle(i, editableStyle);
}