如何使用C#为Excel创建“文本包含”格式化条件(格式条件)

时间:2014-12-20 11:31:47

标签: c# excel conditional-formatting

我想要的是能够根据其中的文本值更改某些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]的精确值与其他值进行比较,而不仅仅是包含的一段字符串。

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

现在我必须多次调用这个方法30次,因为我无法弄清楚如何制作这个条件。要将所有格式应用到70.000行,需要35秒。太多了。

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

  1. 将整个2D数组颜色传递给Excel。
  2. 抱歉我的英语,并提前致谢。

1 个答案:

答案 0 :(得分:4)

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

 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;

我希望这有助于某人。