繁体   English   中英

Apache POI可以将“色阶”条件格式应用于范围吗?

[英]Can Apache POI apply “color scale” conditional formatting to a range?

我可以创建具有色标条件格式的效果(其中单元格的前景色根据当前单元格值与该范围内所有单元格的值进行比较的方式而变化),但是我似乎找不到Excel的条件格式的实现。 Apache POI是否可以创建这种格式设置规则?

答案是肯定的,在Apache POI 3.16版本中。

sheet.getSheetConditionalFormatting().createConditionalFormattingColorScaleRule()

阅读此帖子以了解添加时间(3.13 beta 2)的详细信息: https : //stackoverflow.com/a/32164925/231860

这是显示用法的单元测试: https : //svn.apache.org/repos/asf/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.java

@Test
public void testCreateColorScaleFormatting() throws IOException {
    Workbook wb1 = _testDataProvider.createWorkbook();
    Sheet sheet = wb1.createSheet();

    SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
    ConditionalFormattingRule rule1 = 
            sheetCF.createConditionalFormattingColorScaleRule();
    ColorScaleFormatting clrFmt = rule1.getColorScaleFormatting();

    assertEquals(3, clrFmt.getNumControlPoints());
    assertEquals(3, clrFmt.getColors().length);
    assertEquals(3, clrFmt.getThresholds().length);

    clrFmt.getThresholds()[0].setRangeType(RangeType.MIN);
    clrFmt.getThresholds()[1].setRangeType(RangeType.NUMBER);
    clrFmt.getThresholds()[1].setValue(10d);
    clrFmt.getThresholds()[2].setRangeType(RangeType.MAX);

    CellRangeAddress [] regions = { CellRangeAddress.valueOf("A1:A5") };
    sheetCF.addConditionalFormatting(regions, rule1);

从版本Apache POI 3.10-FINAL开始,答案是否定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM