当前位置: 首页 > 知识库问答 >
问题:

Poi Excel无法应用背景色

洪季萌
2023-03-14

我正在使用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个答案

郑嘉年
2023-03-14

ApachePOI4.0.0答案。如何设置Excel单元格的背景色:

//create workbook/sheet/row/cell

IndexedColorMap colorMap = outputWorkbook.getStylesSource().getIndexedColors();
java.awt.Color pigeonBlue = new java.awt.Color(189, 215, 238);
XSSFColor myBackgroundColor = new XSSFColor(pigeonBlue, colorMap);
XSSFCellStyle myCellStyle = outputWorkbook.createCellStyle();
myCellStyle.setFillForegroundColor(myBackgroundColor);
myCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
outputCell.setCellStyle(myCellStyle);
outputCell.setCellValue("Hi There");

// write & close workbook
燕砚文
2023-03-14

如果使用此代码段,它将起作用:

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

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

 类似资料:
  • 本文向大家介绍改变iOS应用中UITableView的背景颜色与背景图片的方法,包括了改变iOS应用中UITableView的背景颜色与背景图片的方法的使用技巧和注意事项,需要的朋友参考一下 改变UITableView的header、footer背景颜色 改变UITableView的header、footer背景颜色,这是个很常见的问题。之前知道的一般做法是,通过实现tableView: view

  • 问题内容: 我发现,如果将CSS背景应用于,则它将占用整个页面(无论实际的高度或宽度是多少)。 但是,如果您同时对和都应用CSS背景,则的背景 不会占用整个页面 。 这是预期的行为吗? 我该如何叠加两个全屏背景(例如,背景色和半透明图像?) 问题答案: 这是正确的行为。1在标准模式下,,以及,不立即采取了视区的整个高度,即使它出现,所以当你只应用背景后者。实际上,如果您不为其提供自己的背景,则该元

  • 问题内容: 我有一个。当用户悬停div时,我想用rgba颜色()覆盖背景图像。 我想知道是否有一个一格解决方案(即没有多个div,一个用于图像,一个用于颜色,等等)。 我尝试了多种方法: 而这个CSS: 我看到的唯一选择是制作另一个具有覆盖层的图像,使用JavaScript预加载然后使用。但是,我想要一个仅CSS的解决方案(更整洁;更少的HTTP请求;更少的硬盘)。有没有? 问题答案: Peter

  • 我想知道这一点,经过一点挖掘,找到了这个资源,链接在这个答案中。 该资源指出: 背景与背景色 比较18个色板在页面上呈现100次为小矩形,一次带有背景,一次带有背景颜色。 现在,我可以想象要快得多,因为资源也认为: 我认为当浏览器看到

  • 在多个浏览器中最兼容的最佳做法是什么: 或 还是最好同时使用这两种方法来涵盖更多内容: