使用 Apache POI 锁定 Excel 中的单个列

2022-09-03 00:54:55

我想创建一个只锁定特定列(只读)的Excel,其余的都是可编辑的,

我使用以下方法,但这似乎不起作用。

创建两个单元格样式,一个使用 setLocked(true),另一个使用 setLocked(false)。

然后为列中需要锁定的所有单元格应用锁定样式,并对所有其他单元格应用解锁样式。

使用 sheet.protectSheet(“”) 保护工作表;

但是当我在开放的办公室打开创建的Excel时,我注意到所有单元格都被锁定了!

它们都不可编辑。

如何达到上述要求?

P.S :我不能使用数据验证方法。


答案 1

如果你做相反的事情,它的工作原理。保护整个工作表并调用应可编辑的单元格。setLocked(false)

String file = "c:\\poitest.xlsx";
FileOutputStream outputStream = new FileOutputStream(file);
Workbook wb = new XSSFWorkbook();

CellStyle unlockedCellStyle = wb.createCellStyle();
unlockedCellStyle.setLocked(false);

Sheet sheet = wb.createSheet();
sheet.protectSheet("password");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("TEST");
cell.setCellStyle(unlockedCellStyle);

wb.write(outputStream);
outputStream.close();

答案 2

推荐