Poi Excel无法应用背景颜色

我正在使用POI来生成excel。 我有一个场景就像我想应用背景到表中的单元格行,但我无法做到这一点,我给了代码below.Please告诉什么是我的代码中的错误,或者是我所做的代码是正确的..

  System.out.println("Called"); try { XSSFWorkbook xb = new XSSFWorkbook(); XSSFSheet sheet = xb.createSheet(sheetName); XSSFCellStyle cellStyle = xb.createCellStyle(); XSSFFont font = xb.createFont(); int rowIdx = 10; short cellIdx = 1; CommonUtils.getGlobalVariable("GLOBAL.M_COMP_CODE")); int rowNo = 0; // Row 1 XSSFCellStyle boldCellStyle = xb.createCellStyle(); XSSFFont boldFont = xb.createFont(); XSSFRow row1 = sheet.createRow(rowNo); XSSFCell cell1 = row1.createCell(1); boldFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); boldFont.setColor(new XSSFColor(Color.RED)); boldCellStyle.setAlignment(CellStyle.ALIGN_CENTER); boldCellStyle.setFont(boldFont); cell1.setCellValue(headingName); sheet.addMergedRegion(CellRangeAddress.valueOf("B1:I1")); cell1.setCellStyle(boldCellStyle); XSSFCellStyle cellStyleAmount = xb.createCellStyle(); cellStyleAmount.setAlignment(XSSFCellStyle.ALIGN_RIGHT); rowNo++; // Row 2 if ((String) addrDetails.get("COMP_NAME") != null) { XSSFRow row2 = sheet.createRow(rowNo); XSSFCell compNamecell = row2.createCell(1); compNamecell.setCellStyle(cellStyle); compNamecell.setCellValue("Company"); sheet.addMergedRegion(CellRangeAddress.valueOf("B2:B2")); compNamecell = row2.createCell(2); compNamecell .setCellValue((String) addrDetails.get("COMP_NAME")); sheet.addMergedRegion(CellRangeAddress.valueOf("C2:G2")); compNamecell.setCellStyle(cellStyle); } rowNo++; // Row 3 if ((String) addrDetails.get("ADDR_NAME") != null) { XSSFRow row3 = sheet.createRow(rowNo); XSSFCell cell = row3.createCell(1); cell = row3.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue("Address "); sheet.addMergedRegion(CellRangeAddress.valueOf("B3:B3")); cell = row3.createCell(2); cell.setCellValue((String) addrDetails.get("ADDR_NAME")); sheet.addMergedRegion(CellRangeAddress.valueOf("C3:G3")); cell.setCellStyle(cellStyle); } rowNo++; if (addrDetails.get("COMP_ADD_1") != null) { XSSFRow row4 = sheet.createRow(rowNo); XSSFCell cell = row4.createCell(1); cell = row4.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue(""); sheet.addMergedRegion(CellRangeAddress.valueOf("B4:B4")); cell = row4.createCell(2); cell.setCellValue((String) addrDetails.get("COMP_ADD_1")); sheet.addMergedRegion(CellRangeAddress.valueOf("C4:G4")); cell.setCellStyle(cellStyle); } rowNo++; if (addrDetails.get("COMP_ADD_2") != null) { XSSFRow row5 = sheet.createRow(rowNo); XSSFCell cell = row5.createCell(1); cell = row5.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue(""); sheet.addMergedRegion(CellRangeAddress.valueOf("B5:B5")); cell = row5.createCell(2); cell.setCellValue((String) addrDetails.get("COMP_ADD_2")); sheet.addMergedRegion(CellRangeAddress.valueOf("C5:G5")); cell.setCellStyle(cellStyle); } rowNo++; if (addrDetails.get("COMP_ADD_3") != null) { XSSFRow row6 = sheet.createRow(rowNo); XSSFCell cell = row6.createCell(1); cell = row6.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue(""); sheet.addMergedRegion(CellRangeAddress.valueOf("B6:B6")); cell = row6.createCell(2); cell.setCellValue((String) addrDetails.get("COMP_ADD_3")); sheet.addMergedRegion(CellRangeAddress.valueOf("C6:G6")); cell.setCellStyle(cellStyle); } rowNo++; if (addrDetails.get("CONTACT") != null) { XSSFRow row7 = sheet.createRow(rowNo); XSSFCell cell = row7.createCell(1); cell = row7.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue("Contact"); sheet.addMergedRegion(CellRangeAddress.valueOf("B7:B7")); cell = row7.createCell(2); cell.setCellValue((String) addrDetails.get("CONTACT")); sheet.addMergedRegion(CellRangeAddress.valueOf("C7:G7")); cell.setCellStyle(cellStyle); } rowNo++; String pattern = "###,###.##"; DecimalFormat decimalFormat = new DecimalFormat(pattern); // Row 8 XSSFRow row8 = sheet.createRow(rowNo); XSSFCell cell = row8.createCell(1); cell = row8.createCell(0); cell.setCellStyle(cellStyle); cell.setCellValue("Document No :"); cell = row8.createCell(1); cell.setCellValue(fhdocNo); cell.setCellStyle(cellStyle); cell = row8.createCell(2); cell.setCellStyle(cellStyle); cell.setCellValue("From Date :"); cell = row8.createCell(3); cell.setCellValue(fromDate); cell.setCellStyle(cellStyle); cell = row8.createCell(4); cell.setCellStyle(cellStyle); cell.setCellValue("To Date :"); cell = row8.createCell(5); cell.setCellValue(toDate); cell.setCellStyle(cellStyle); cell = row8.createCell(6); cell.setCellStyle(cellStyle); cell.setCellValue("Period Type :"); cell = row8.createCell(7); cell.setCellValue(period); cell.setCellStyle(cellStyle); rowNo++; // Table Header XSSFRow row9 = sheet.createRow(rowNo); XSSFCell cell9 = row9.createCell(1); XSSFCellStyle headerCellStyleAmount = xb.createCellStyle(); headerCellStyleAmount.setAlignment(HSSFCellStyle.ALIGN_RIGHT); XSSFFont minusIndicatorfont = xb.createFont(); minusIndicatorfont.setColor(new XSSFColor(Color.red)); headerCellStyleAmount.setFont(minusIndicatorfont); XSSFRow xssfHeader = sheet.createRow(rowIdx); XSSFColor color1 = new XSSFColor(Color.gray); XSSFCellStyle headCellStyle; headCellStyle = (XSSFCellStyle) cell9.getCellStyle(); headCellStyle.setFillBackgroundColor(new XSSFColor(new Color(216, 216, 216))); cell9 = xssfHeader.createCell(1); cell9.setCellStyle(cellStyle); cell9.setCellValue(""); for (int i = 0; i < listSize; i++) { XSSFCell xssfCell = xssfHeader.createCell(cellIdx++); xssfCell.setCellValue(monthList.get(i).getSD_LABEL()); headCellStyle.setFillForegroundColor(color1); headCellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); xssfCell.setCellStyle(headCellStyle); } rowIdx++; xb.setSheetName(0, sheetName); /* * HttpServletResponse response = (HttpServletResponse) * externalContext .getResponse(); OutputStream os = * response.getOutputStream(); wb.write(os); * response.setHeader("Content-Disposition", * "attachment; filename=\"" + fileName + ".xls"); * response.getOutputStream().flush(); * response.getOutputStream().close(); * FacesContext.getCurrentInstance().responseComplete(); */ ExternalContext externalContext = FacesContext.getCurrentInstance() .getExternalContext(); writeExcelToResponse(externalContext, xb, fileName); } catch (Exception e) { e.printStackTrace(); } 

如果你使用这个片段,它将工作:

 XSSFCellStyle style = workbook.createCellStyle(); XSSFColor myColor = new XSSFColor(Color.RED); style.setFillForegroundColor(myColor); style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); 

我可以给你这个链接 ,在那里描述如何使用XSSF。 主要更改是从工作簿中创build一个新的XSSFCellStyle并设置填充模式。