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

Apache POI-条件格式-需要为规则和格式设置不同的单元格范围

澹台聪
2023-03-14
`   XSSFSheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
    ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.GT, "5");

    PatternFormatting patternFmt = rule1.createPatternFormatting();
    patternFmt.setFillBackgroundColor(IndexedColors.YELLOW.index);

    sheetCF.addConditionalFormatting(addressList.getCellRangeAddresses(), rule1); //when rule1 is met, same cell is colored yellow

但我想要的是当规则1满足时,然后给不同的单元格区域着色。

在poi中这可能吗?怎么可能?

共有1个答案

淳于博文
2023-03-14

Excel提供基于公式的条件格式规则。

如果$c1中的值是数值且大于5,则公式=and(ISNUMBER($c1),$c1>5)返回true。如果此公式应用于G1:L1000范围,则如果相应行的列C中的值满足该连接,则此范围中的每个单元格都为true。这是因为列C是使用公式中的$C来确定的。但是行号不是固定的,因此是相对的。

使用Apache POI示例

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.apache.poi.ss.util.CellRangeAddress;

import java.io.FileOutputStream;

public class ConditionalFormatting {

 public static void main(String[] args) throws Exception {
  Workbook workbook = new XSSFWorkbook();

  Sheet sheet = workbook.createSheet("new sheet");
  SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

  ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule("AND(ISNUMBER($C1), $C1>5)");
  PatternFormatting fill = rule.createPatternFormatting();
  fill.setFillBackgroundColor(IndexedColors.YELLOW.index);
  fill.setFillPattern(PatternFormatting.SOLID_FOREGROUND);

  ConditionalFormattingRule[] cfRules = new ConditionalFormattingRule[]{rule};

  CellRangeAddress[] regions = new CellRangeAddress[]{CellRangeAddress.valueOf("G1:L1000")};

  sheetCF.addConditionalFormatting(regions, cfRules);

  workbook.write(new FileOutputStream("ConditionalFormatting.xlsx"));
  workbook.close();

 }
}
 类似资料:
  • 但我想要的是当规则1满足时,然后给不同的单元格区域着色。 在poi中这可能吗?怎么可能?

  • 我正在使用谷歌表单作为日常仪表板。我需要的是根据另一个单元格C5的值更改单元格B5的背景色。如果C5大于80%,则背景色为绿色,但如果低于,则为琥珀色/红色。 这是Google Sheets功能提供的还是我需要插入脚本?

  • 公司及产品名称 我们的公司及产品名称是「DaoCloud」。注意这是两个单词的合成词,所以中间沒有空格(参考:GitHub)。如作为 URL 的一部分,应该使用全小写的「daocloud」。 文案风格 一定多检查,确保没有错别字。 即使是流行语中的谐音错别字也不要使用,比如「墙裂」、「童鞋」等。 我们崇尚精练的文风。请在检查中把对表达意思没有明显作用的字、词、句删除,在不影响表达效果的前提下把文案

  • 我有两个checkstyle文件用于目标源,另一个用于测试源。使用intellij的Checkstyle-Idea插件,我只能为整个项目配置一组规则。 是否可以为不同的作用域配置不同的CheckStyle?

  • 代码规范 代码风格 以 cargo 输出没有 warning 为准 可以通过根目录的 make fmt 来自动调用 cargo fmt 规范全部的代码 注释规范 用 //! 注释外层内容,例如在文件开始注释整个模块 用 /// 为函数添加 doc 注释,其内部使用 Markdown 语法 可以使用 markdown 格式的链接,链接内容使用 Rust 可以直接链上,例如 /// 样例注释 ///