Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件格式隐藏文本_C#_Excel_Format - Fatal编程技术网

C# 条件格式隐藏文本

C# 条件格式隐藏文本,c#,excel,format,C#,Excel,Format,我有一个Excel工作表,我正在用C#编写的外接程序中添加条件格式 条件激发正常,我可以更改填充颜色,但文本总是隐藏 如果我从格式中删除填充颜色,当应用格式时,文本仍然会隐藏 如果我删除了所有格式,只应用了条件而没有任何格式更改,文本仍然是隐藏的 当格式条件不再有效时,文本将按预期显示 单元格值绝对设置正确 为什么会发生这种情况 C#代码如下: var disabledFormat = "IF(blah blah...),FALSE,TRUE)"; var formatCondition = (

我有一个Excel工作表,我正在用C#编写的外接程序中添加条件格式

条件激发正常,我可以更改填充颜色,但文本总是隐藏

如果我从格式中删除填充颜色,当应用格式时,文本仍然会隐藏

如果我删除了所有格式,只应用了条件而没有任何格式更改,文本仍然是隐藏的

当格式条件不再有效时,文本将按预期显示

单元格值绝对设置正确

为什么会发生这种情况

C#代码如下:

var disabledFormat = "IF(blah blah...),FALSE,TRUE)";
var formatCondition = (Excel.FormatCondition)cell.FormatConditions.Add(
                           Excel.XlFormatConditionType.xlExpression, 
                           Type.Missing, disabledFormat);
formatCondition.Font.Color = ColorTranslator.FromHtml("#C0C0C0");
formatCondition.Interior.Color = ColorTranslator.FromHtml("#F0F0F0");
[编辑]

我曾尝试将颜色更改为白色、黑色、红色等,但在应用条件格式时,颜色仍然不可见

[/编辑]

[编辑二]

请求的完整禁用格式字符串: (代码看起来并没有完全链接到这一点,因为它跨越了几个类,我只是试图填补空白以提供帮助:$)

决心:

=IF(LEFT(MID('$controls_Distribution Grid'!W19,FIND("|",'$controls_Distribution Grid'!W19,FIND("|",'$controls_Distribution Grid'!W19)+1)+1,999),LEN(INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1))))=INDIRECT("'$lookup_grading'!"&ADDRESS(Q5,1)),FALSE,TRUE)
为了进一步澄清,它在具有相同地址的另一个工作表中的单元格中查找值,从该单元格中的格式化字符串中获取值,并将其与下拉列表中所选项目指示的值进行比较。如果存在匹配项,则返回
TRUE

同样的公式也用于返回单元格值的
1
0
,因此我知道这是可行的

[Edit2]

[编辑部3]

我已经把问题缩小到
NumberFormat
,也就是
“a”。
如果条件格式设置未正确触发,则会显示
a
(或应用了Webdings的勾号)。 但是当条件格式触发时,NumberFormat的输出不会出现。 我不知道为什么这是故意的,所以我猜这是Excel中的一个错误,但我会用谷歌搜索来检查

[Edit3]

这是单元格中返回1或0的公式(希望足够清楚!)


这听起来像是字体文件中的错误。请尝试使用标准字符a-Z,以查看它在格式化时是否消失。如果它没有消失,那么你可能有一个损坏的字体文件。可能必须转储wingdings字体并重新安装。

尝试使用此选项

formatCondition.Font.ThemeColor = ColorTranslator.FromHtml("#909090");
formatCondition.Interior.ThemeColor = ColorTranslator.FromHtml("#F0F0F0");
formatCondition.Interior.PatternColorIndex = xlAutomatic;
我不知道是否需要
PatternColorIndex
,这是我从宏录制中得到的

编辑: 这是宏,如果它有助于您:

With Selection.Font
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.499984740745262
End With
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.149998474074526
    .PatternTintAndShade = 0
End With

数字格式的定义是由
分隔的四个字段

<POSITIVE>;<NEGATIVE>;<ZERO>;<TEXT>
;;;
您的数字格式<代码>“a”表示如果值为正值,则显示
a
,如果值为零,则显示负值或文本,则不显示任何内容

您的公式返回
TRUE
FALSE
,它们被视为文本,因此当您的条件触发时,格式会隐藏单元格值


我建议您将公式更改为返回
1
0
,然后显示
a
或nothing

您确定它是隐藏的,而不仅仅是相同的颜色吗?(或者一种非常相似的颜色使它看起来很隐蔽)不,这两种说法都可能是真的。但是将字体颜色设置为任何颜色都没有区别。如果我过度键入单元格,我可以在键入时看到文本,但在我离开单元格时文本会消失。我100%确定字体颜色不同。如果我不更改任何颜色,问题仍然会出现。您能显示实际的
禁用格式
字符串吗?这些是你仅有的2个
formatConditions
吗?我不确定这会有多大帮助,但我提供了构建
disabledFormat
字符串的代码,以及一个构建时的外观示例。我使用条件格式规则管理器尝试编辑规则,但是字体列表似乎已被禁用,因此我无法手动更改为其他字体!但我认为这很正常。但是,如果我手动更改单元格字体,例如Tahmoa或Calibri,文本仍然不可见。如果我手动将相同的条件格式添加到另一个单元格,即不使用C#,则所有内容都显示良好。这只是用C代码添加条件格式时的一个问题。感谢
ThemeColor
的建议。我试过了,但结果是一样的。很不幸,宏不好,因为我必须在外接程序中使用C#代码。实际上,这只是条件公式,即决定是否应用格式的公式。实际单元格值为1或0。但是谢谢你的回答和关于格式的课程:)@bukko那么实际的单元格值是多少?1或0(更多的字母,S/O会让我发布)@bukko当你想显示
a
,1,0或其中一个时,它是哪个值?1应该显示
a
。这实际上是一个公式,我现在正在运行,所以我可以发布它。。。
With Selection.Font
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.499984740745262
End With
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.149998474074526
    .PatternTintAndShade = 0
End With
<POSITIVE>;<NEGATIVE>;<ZERO>;<TEXT>