【问题标题】:Setting RGB Colors with XSSFColor使用 XSSFColor 设置 RGB 颜色
【发布时间】:2020-02-06 23:25:59
【问题描述】:

我正在尝试使用下面的 XSSFColor setFillForeground() 方法设置 RGB 颜色值

XSSFWorkbook workbook= new XSSFWorkbook();
CellStyle style = workbook.createCellStyle();
Style.cloneStyleFrom(headerStyle);
Style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
XSSFColor color = new XSSFColor(new java.awt.Color(215,228,188)); //accepts a short value
style.setFillForegroundColor(color .getIndexed());

Sheet sheet = workbook.createSheet(sheetName);
Row headerRow = sheet.createRow(0);

Cell cell = headerRow.createCell(i);
cell.setCellStyle(style);

我传递的是短值,但是无论 RGB 值是多少,我的前景都设置为黑色。我还没有发现为什么会这样 - 有什么想法吗?

【问题讨论】:

    标签: java apache-poi


    【解决方案1】:

    getIndexed() method in XSSFColor 的 Javadocs 声明它是为了向后兼容。 XSSF 基本上没有调色板,所以在CellStyle 中设置颜色索引是没有用的。

    但是,XSSF 有自己的方法来设置样式中的前景色——直接使用颜色。使用overload of setFillBackgroundColor that directly takes a XSSFColor。只存在于XSSFCellStyle,不存在接口CellStyle,所以先转换成XSSFCellStyle

    ((XSSFCellStyle) style).setFillForegroundColor(color);
    

    【讨论】:

    • 这就像一个魅力。非常感谢您的解释
    • 唯一适用于 NPOI 的解决方案...谢谢先生
    【解决方案2】:

    您可以查看Apache Colors and Fills提供的示例

    XSSFWorkbook wb = new XSSFWorkbook();
    XSSFSheet sheet = wb.createSheet();
    XSSFRow row = sheet.createRow(0);
    XSSFCell cell = row.createCell( 0);
    cell.setCellValue("custom XSSF colors");
    XSSFCellStyle style1 = wb.createCellStyle();
    style1.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128), new DefaultIndexedColorMap()));
    style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2016-11-08
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多