首页 文章

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

提问于
浏览
2

我试图锁定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 回答

  • 1

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

  • 0

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

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

    CellStyle editableStyle = workbook.createCellStyle();
    editableStyle.setLocked(false);
    
    for (int i = 0; i < numColumns; i++) {
       sheet.setDefaultColumnStyle(i, editableStyle);
    }
    

相关问题