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

本文关键字:格式 条件 文本包含 包含 文本 何使用 Excel 创建 | 更新日期: 2023-09-27 18:34:44

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

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

现在我必须根据需要调用此方法 30 倍,因为我无法弄清楚如何使这个条件。将所有格式应用于 70.000 行需要我 35 秒。太多了。

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

  1. 将整个 2D 颜色数组传递给 Excel。

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

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

所以一个朋友找到了这个可怕问题的答案。允许这种"包含"格式的函数实际上存在。这是完成的:

 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;

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