【问题标题】:How to create "Text Contains" FormattingConditional (Format Condition) for Excel with C#如何使用 C# 为 Excel 创建“文本包含”格式条件(格式条件)
【发布时间】:2014-12-20 11:31:46
【问题描述】:

我想要的是能够根据其中的文本值更改某些 Excel 文件单元格的颜色。

这是我所拥有的:

private void validator(Excel.Worksheet sheet, int lastCellRowNum, XlRgbColor color)
{
  FormatCondition cond = sheet.get_Range("A1:I"+lastCellRowNum,Type.Missing).FormatConditions.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlEqual, sheet.Cells[1,1]);
  cond.Interior.Color = color;
}

此代码将 Cell[1,1] 的 exact 值与其他值进行比较,而不仅仅是包含的一段字符串。

基本上,我想要的是一种允许“包含”条件提高代码性能的格式。例如,如果在 Cell[1,1].Value2 中为“Hello”,我希望任何具有 Value2 等于“ByeHelloBye”的 Cell 或任何其他包含“Hello”的字符串都包含在条件中。

现在我必须尽可能多地调用这个方法 30 次,因为我不知道如何创建这个条件。将所有格式应用于 70.000 行需要 35 秒。太多了。

解决我的问题的其他可能方法是:

  1. 将整个二维颜色数组传递给 Excel。

对不起我的英语,提前谢谢。

【问题讨论】:

    标签: c# excel conditional-formatting


    【解决方案1】:

    所以一位朋友找到了这个可怕问题的答案。允许这种“包含”格式的功能实际上是存在的。它是这样完成的:

     FormatCondition cond = sheet.get_Range("A1:I70000", Type.Missing).FormatConditions.Add(XlFormatConditionType.xlTextString, Type.Missing, Type.Missing, Type.Missing, "SomethingToFilterIfContained", XlContainsOperator.xlContains, Type.Missing, Type.Missing);
     cond.Interior.Color = color;
    

    我希望这对某人有所帮助。

    【讨论】:

    • 一年后,尽管我进行了所有搜索,但您的问题/答案是我发现的唯一对我有帮助的结果!非常感谢!!
    • 很高兴能帮到你。我记得发现这个的噩梦。
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多