2014-12-20 50 views
1

我想要的是可以根據文本中的文本值更改某些Excel文件單元格的顏色。如何使用C#爲Excel創建「文本包含」FormattingConditional(格式條件)

以下是我有:

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; 
} 

此代碼比較細胞[1,1]與其他的確切價值,而不僅僅是一條繩子遏制。

基本上,我想要的是一種格式,允許「包含」條件來提高我的代碼的性能。例如,如果在Cell [1,1] .Value2中爲「Hello」,我希望Value2中的任何Cell等於「ByeHelloBye」,或者任何其他包含「Hello」的字符串包含在條件中。

現在我必須調用這個方法多30倍,因爲我想不出如何使這個條件。將所有格式應用到70.000行需要35秒。太多了。

其他可能的解決我的問題是:

  1. 傳遞的顏色整體二維數組到Excel。

對不起,我的英語,並在此先感謝。

回答

3

所以一個朋友找到了這個可怕的問題的答案。允許此「包含」格式的功能實際上存在。這是如何完成的:

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; 

我希望這可以幫助某人。

+0

一年後,儘管我做了所有的搜索,但您的問題/答案是我找到的唯一幫助我的結果!非常感謝!! – CodeCanuck

+1

我很高興我幫你。我記得找到這個的噩夢。 – Andres

相關問題