0
apache poi를 사용하여 Excel 파일을 생성 중이며 마지막 두 열을 해당 Excel 파일에서만 읽으려고합니다. 그래서 내가 POI의 잠금 기능을 시도했지만 지금까지apche POI를 사용하여 Excel에서 perticular 열을 읽기 전용으로 만드는 방법
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
sheet.protectSheet("password");
HSSFRow row = null;
HSSFCell cell = null;
/* cell style for locking */
CellStyle lockedCellStyle = wb.createCellStyle();
lockedCellStyle.setLocked(true);
/* cell style for editable cells */
CellStyle unlockedCellStyle = wb.createCellStyle();
unlockedCellStyle.setLocked(false);
cell = row.createCell(columnNo);
if (null != taskDiaryItem.getDueDate()) {
SimpleDateFormat formater = new java.text.SimpleDateFormat(InboxItemValue.INBOX_DATE_FORMAT.value());
cell.setCellValue(new HSSFRichTextString(formater.format(taskDiaryItem.getDueDate())));
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
columnNo = columnNo + 1;
/*** End Change : CR#20 CQ#fklnp00272463 ***/
cell = row.createCell(columnNo);
if (null != taskDiaryItem.getTaskPriorityDescription()) {
cell.setCellValue(new HSSFRichTextString(taskDiaryItem.getTaskPriorityDescription()));
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
columnNo = columnNo + 1;
cell = row.createCell(columnNo);
if (null == taskDiaryItem.getContractNumber() || (taskDiaryItem.getContractNumber().isEmpty())) {
cell.setCellValue(new HSSFRichTextString(taskDiaryItem.getContractNumber()));
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
columnNo = columnNo + 1;
cell = row.createCell(columnNo);
if (null != taskDiaryItem.getTaskStatusDescription()) {
cell.setCellValue(new HSSFRichTextString(taskDiaryItem.getTaskStatusDescription()));
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
columnNo = columnNo + 1;
if (!fromContext.equals(InboxItemValue.USER_INBOX.value())
&& !fromContext.equals(InboxItemValue.TEAM_MEMBER.value())) {
cell = row.createCell(columnNo);
if (null != taskDiaryItem.getAssignedToName()) {
cell.setCellValue(new HSSFRichTextString(taskDiaryItem.getAssignedToName()));
cell.setCellStyle(unlockedCellStyle);
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
columnNo = columnNo + 1;
}
cell = row.createCell(columnNo);
if (null != taskDiaryItem.getAssignedBy()) {
cell.setCellValue(new HSSFRichTextString(taskDiaryItem.getAssignedBy()));
cell.setCellStyle(lockedCellStyle);
} else {
cell.setCellValue(new HSSFRichTextString(" "));
}
} else if(InboxItemValue.PST_INBOX.value().equals(fromContext)) {
cell = tasksForPSTAndPlacement(taskDiaryItem, cell, row, columnNo, fromContext);
} else if(InboxItemValue.PLACEMENT_INBOX.value().equals(fromContext)) {
cell = tasksForPSTAndPlacement(taskDiaryItem, cell, row, columnNo, fromContext);
}
j++;
}
response.setHeader("Content-Disposition", "attachment; filename=Inbox.xls");
response.setHeader("Content-type", "application/vnd.ms-excel");
ServletOutputStream fileOut = response.getOutputStream();
wb.write(fileOut);
fileOut.close();
I alreday 내 코드를 볼 시도하는 경우 (널 (null) = taskDiaryItem.getAssignedToName (!)) { cell.setCellValue (새 HSSFRichTextString (taskDiaryItem.getAssignedToName())); cell.setCellStyle (unlockedCellStyle); } – storyteller
내 코드를 편집 할 수 있습니까? 나는 이미 당신이 말한 해결책을 시도했습니다. – storyteller
시트 시트 = wb.createSheet()를 사용하여 보호 된 시트를 만들었습니까? sheet.protectSheet ("password"); – mhasan