java - Apache POI:使用SOLID_FILL模式在conditionalFormatting中设置前景色时出现问题

原文 标签 java kotlin apache-poi

我想使用一种格式来使用Apache POI在生成的Excel工作表中实现行带状格式(奇数行:灰色,偶数行:无背景色)。

以下是相关代码:

       val sheetCF = sheet.sheetConditionalFormatting       
       val rule1 = sheetCF.createConditionalFormattingRule(
        "MOD(ROW(), 2) = 0")

       val fill1 = rule1.createPatternFormatting()
       fill1.setFillForegroundColor( XSSFColor(Color(245,245,245),DefaultIndexedColorMap())) // Light Gray color
      fill1.fillPattern = PatternFormatting.SOLID_FOREGROUND // this is causing issue
      val regions1 = arrayOf(CellRangeAddress.valueOf("A1:D10"))   
      sheetCF.addConditionalFormatting(regions1, rule1)


由于fillPattern,白色被应用为前景。但是,如果使用了其他fillPattern,那么它将正常工作。例:
           fill1.fillPattern = PatternFormatting.BIG_SPOTS

但是我需要运用坚实的模式。
任何帮助将不胜感激。

最佳答案

与通常为单元格上色的方式相反,对于XSSFConditionalFormattingRule,实际上必须使用setFillBackgroundColor()而不是setFillForegroundColor()

XSSFConditionalFormattingRule rule = sheet.getSheetConditionalFormatting().createConditionalFormattingRule("MOD(ROW(), 2) = 0");
XSSFPatternFormatting fill = rule.createPatternFormatting();
fill.setFillBackgroundColor(IndexedColors.BLUE.getIndex());
fill.setFillPattern(FillPatternType.SOLID_FOREGROUND.getCode());
CellRangeAddress[] regions = { CellRangeAddress.valueOf("A2:Z" + (sheet.getLastRowNum() + 1)) };

sheet.getSheetConditionalFormatting().addConditionalFormatting(regions, rule);

关于java - Apache POI:使用SOLID_FILL模式在conditionalFormatting中设置前景色时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59368696/

相关文章:

kotlin - 如何从Kotlin AllOpen插件中排除注释?

java - NoClassDefFoundError : org/apache/poi/ss/formula/udf/UDFFinder error in java

java - 使用POI与合并混淆

java - 以openxmlformats更改图表的轴颜色和字体

java - 通过嵌入式Glassfish通过Hibernate与MySQL进行数据库连接

java - 解析字符串以获取分组参数

java - 如何拆分Java字符串但保留其部分内容?

java - 如何在Java JTS中找到给定线段的平行线(源线上方和下方的平行线)?

java - Elasticsearch:如何调用must与数组Java High Level REST Client长度不同的字符串

java - 在不实现的情况下处理抽象类