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

JavaApache Poi,如何同时设置背景色和边框

韩乐湛
2023-03-14

一开始,我想说我在开发人员的世界里是全新的。

我试图生成一个excel表,其中包含带边框和设置背景颜色的多表,但只针对第一列和第一行。

这是一个正确的示例:正确的示例

我写了类似的东西,但结果文件彩色单元格没有边框:(。

请告诉我如何同时设置背景颜色和边框。

共有3个答案

郗福
2023-03-14

您真正的问题是,您有两种样式,一种命名为background Style,另一种命名为borderStyle。然后,您将两种样式应用于同一个单元格,但一个单元格只能有一种样式,因此,您不是添加第二种样式,而是用第二种样式覆盖第一种样式。

而不是:

    CellStyle backgroundStyle = workbook.createCellStyle();

    backgroundStyle.setFillBackgroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
    backgroundStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

    CellStyle borderStyle = workbook.createCellStyle();

    borderStyle.setBorderBottom(CellStyle.BORDER_THIN);
    borderStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
    borderStyle.setBorderLeft(CellStyle.BORDER_THIN);
    borderStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
    borderStyle.setBorderRight(CellStyle.BORDER_THIN);
    borderStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
    borderStyle.setBorderTop(CellStyle.BORDER_THIN);
    borderStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

只需创建如下单个样式:

    CellStyle backgroundStyle = workbook.createCellStyle();

    backgroundStyle.setFillBackgroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
    backgroundStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

    backgroundStyle.setBorderBottom(CellStyle.BORDER_THIN);
    backgroundStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
    backgroundStyle.setBorderLeft(CellStyle.BORDER_THIN);
    backgroundStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
    backgroundStyle.setBorderRight(CellStyle.BORDER_THIN);
    backgroundStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
    backgroundStyle.setBorderTop(CellStyle.BORDER_THIN);
    backgroundStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

然后将其应用于您的手机:

    Sheet sheet = workbook.createSheet();
    Row row = sheet.createRow(1);
    Cell cell = row.createCell(1);
    cell.setCellStyle(backgroundStyle);

注意:如其他答案所述,FillPattern=SOLID_FOREGROUND忽略背景颜色,您必须为该图案设置前景颜色。这可能会令人困惑,因为您正在尝试将单元格背景设置为纯色。但单元格背景background color单元格背景填充样式相同,它有两种颜色,一种是Foreground Colorbackground Color,这两种颜色是根据所选的特定填充样式显示的。SOLID_FOREGROUND填充仅使用前景颜色。

司马钱明
2023-03-14

从POI 3.x开始,单元格填充颜色设置如下:

CellStyle cs = wb.createCellStyle();
cs.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
党建义
2023-03-14

请更改< code > background style . setfillbackgroundcolor(indexed colors。GREY _ 50 _ percent . getindex());到

 backgroundStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());

您可以如下设置边框:

        backgroundStyle.setBorderBottom(CellStyle.BORDER_THIN);
        backgroundStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        backgroundStyle.setBorderLeft(CellStyle.BORDER_THIN);
        backgroundStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        backgroundStyle.setBorderRight(CellStyle.BORDER_THIN);
        backgroundStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
        backgroundStyle.setBorderTop(CellStyle.BORDER_THIN);
        backgroundStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());

这将根据需要为您提供黄色和边框

 类似资料:
  • 问题内容: 一开始,我想说我是开发人员领域的新手。 我试图生成一个Excel工作表,其中包含带边框的Mutiplication表并设置背景颜色,但仅用于第一列和第一行。 这是一个正确的例子:正确的例子 我写了类似的东西,但是结果文件彩色单元格没有边框:(。 请向我解释如何同时设置背景颜色和边框。 问题答案: 更改 为 您可以如下设置边框: 这将根据需要为您提供黄色和边框

  • 问题内容: 以下代码中的行无效。为什么?我该如何解决? 问题答案: 您需要调用小部件。默认情况下,a不会填充背景。 有关更多信息,请参见该属性的文档。 如果要使用任意背景色,则需要修改小部件的调色板:

  • 通过RGB值设置背景的颜色。 默认的颜色是 0x000000: // 颜色的参数可以是字符串 "#530000" 或者是十六进制数值 0x530000 controller.setBackgroundColor("#530000); //controller.setBackgroundColor(0x530000);

  • 嘿,伙计们,我实际上是java编程的新手。我可以把背景颜色的代码行放在哪里。因为当我在main方法中放一个颜色为黄色的jpanel时。jframe中背景颜色的设置有效,但jtag、jtext field和j按钮现在不见了...一切都只是黄色。 }

  • 问题内容: 当我尝试使用以下命令在Vim 中或直接在Vim中更改背景色时: …完全不影响我的背景。该选项也没有。但是,当我运行gvim时看起来还可以。 有没有一种方法可以在Vim中更改背景而不更改我的Konsole设置? 编辑 好的,guifg / guibg和ctermfg / ctermbg之间是有区别的。虽然GUI接受许多不同的颜色组合,但是cterm仅允许很少的标准颜色组合。 问题答案:

  • 问题内容: 我正在使用Nimbus外观。我需要在JTabbedPane中更改选项卡的背景色和前景色,但在JTabbedPane中未设置颜色。我尝试了setForeground(),setForegroundAt(),setBackground()和setBackgroundAt()方法,但没有用。这是我的代码 } 问题答案: 您可以执行几项不同的操作,具体取决于您希望对确切颜色进行多少控制。最简单