当前位置: 首页 > 面试题库 >

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

段干靖
2023-03-14
问题内容

我正在尝试使用apache poi java创建一个空的excel模板。我需要添加一个规则-
当列号为。填充3,然后需要以某种颜色突出显示从7到12的列(作为用户的强制性指示)。

我可以在下面的代码中找到在同一单元格上满足条件时为单元格着色的代码。但是我想在当前单元格满足条件时为不同的单元格上色/格式化。

`   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

但是我想要的是当满足rule1时,然后为另一个单元格区域着色。

poi可能出现这种情况吗?


问题答案:

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

如果in的值是数字且大于5 , 则该公式=AND(ISNUMBER($C1), $C1>5)返回。如果将此公式应用于范围,则如果相应行的列中的值满足该条件,则此范围内的每个单元格都为true
。那是因为列在公式中使用固定。但是行号不是固定的,因此是固定的。True``$C1``G1:L1000``C``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();

 }
}

现在,如果您在C数字列中放置数值大于5的内容,则列中的单元格G:L将填充为黄色。



 类似资料:
  • 但我想要的是当规则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 可以直接链上,例如 /// 样例注释 ///