0
我正在使用apache poi生成一個excel文件,並且我想僅使該excel文件中的最後兩列爲只讀。這就是我一直的興趣點鎖定的功能,但它正在只讀的所有單元格,在這裏我想最後兩個只讀。在這裏我張貼我做了什麼至今如何在excel中使用apche只讀只讀專欄POI
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();
我已經試過alreday看到我的代碼,如果(空= taskDiaryItem.getAssignedToName()!){ cell.setCellValue(新HSSFRichTextString(taskDiaryItem.getAssignedToName())); cell.setCellStyle(unlockedCellStyle); } – storyteller
你可以編輯我的代碼我已經嘗試過你說的解決方案。請 – storyteller
您是否使用Sheet sheet = wb.createSheet()創建了受保護的表單? sheet.protectSheet(「password」); – mhasan