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

时间:2011-12-06 08:40:53

标签: java excel apache-poi

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

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

创建两个CellStyles,一个使用setLocked(true),另一个使用setLocked(false)。

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

使用sheet.protectSheet(“”);

保护工作表

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

它们都不可编辑。

我如何达到上述要求?

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

1 个答案:

答案 0 :(得分:22)

如果你做相反的事情就行了。保护整张表格并致电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();