programing

Apache POI를 사용하여 Excel에서 단일 열 잠금

stoneblock 2023. 6. 28. 21:16

Apache POI를 사용하여 Excel에서 단일 열 잠금

특정 열만 잠그고(읽기 전용) 나머지는 편집 가능한 Excel을 만들고 싶습니다.

저는 다음과 같은 방법을 사용하고 있지만, 그것이 효과가 없는 것 같습니다.

하나는 setLocked(true)이고 다른 하나는 setLocked(false)인 두 개의 CellStyle을 만듭니다.

그런 다음 잠금이 필요한 열의 모든 셀에 잠금 스타일을 적용하고 다른 모든 셀에 잠금 해제 스타일을 적용합니다.

sheet.protect를 사용하여 시트를 보호합니다.시트(""");

그러나 오픈 오피스에서 생성된 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();

언급URL : https://stackoverflow.com/questions/8397169/lock-single-column-in-excel-using-apache-poi