Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApachePOI锁定Excel中的单个列_Java_Excel_Apache Poi - Fatal编程技术网

Java 使用ApachePOI锁定Excel中的单个列

Java 使用ApachePOI锁定Excel中的单个列,java,excel,apache-poi,Java,Excel,Apache Poi,我想创建一个Excel,其中只有一个特定列被锁定(只读),其余列可编辑 我正在使用以下方法,但这似乎不起作用 创建两个单元格样式,一个为setLocked(true),另一个为setLocked(false) 然后对列中需要锁定的所有单元格应用锁定样式,对所有其他单元格应用解锁样式 使用纸张保护纸张。protectSheet(“”) 但当我在open office中打开创建的Excel时,我注意到所有单元格都已锁定 它们都不可编辑 我怎样才能达到上述要求 注:我不能使用数据验证方法。如果你做相反

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

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

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

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

使用纸张保护纸张。protectSheet(“”)

但当我在open office中打开创建的Excel时,我注意到所有单元格都已锁定

它们都不可编辑

我怎样才能达到上述要求


注:我不能使用数据验证方法。

如果你做相反的事情,它会起作用。保护整个工作表,并对应可编辑的单元格调用
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();

更清楚地说,整个工作簿都被锁定,包括应该解锁的单元格。