2015-07-28 2 views
0

Я использую POI для генерации excel. У меня есть сценарий Как я хочу применить фон к строке ячейки в таблице. Но я не могу это сделать. Я дал код ниже. Пожалуйста, сообщите, что является ошибкой в ​​моем коде или это код, который я делаю правильно ..Poi Excel Невозможно применить цвет фона

Код

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(); 
    } 

ответ

2

Если вы используете этот фрагмент кода будет работать:

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

Я могу дать вам это link, где дано описание, как использовать XSSF. Главное изменение - создать новый XSSFCellStyle из рабочей книги и установить шаблон заполнения.

+2

Использовать 'новый цвет (0xFF0000);' вместо 'Color.Red' – MrT

+0

приведенный выше код применим ко всем строкам ... Как я должен примените его к определенной строке –

+0

Установите стиль для конкретной ячейки. – MrT

Смежные вопросы