3

我正在尝试使用带有以下代码的 C# 添加条件格式。

Microsoft.Office.Interop.Excel.FormatCondition formatConditionObj = null;

formatConditionObj = (Microsoft.Office.Interop.Excel.FormatCondition)myRange
.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, 
Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, 
Type.Missing, Type.Missing);

formatConditionObj.Interior.ColorIndex = 5;

我动态地更改应用这些格式的范围

formatConditionObj.ModifyAppliesToRange(NewRange);

现在我想删除这种应用的格式如何实现。

formatConditionObj.Delete();

这对我不起作用。这不会删除应用它的所有单元格的格式。仅删除最后的单元格格式。

我也尝试过使用

formatConditionObj.AppliesTo.Delete();

但它也会删除其他应用于该单元格的 ConditionalFormats。

注意:某些格式已经应用在单元格上,在这些单元格中应用了这种条件格式,例如某些填充颜色。甚至还有一些其他条件格式应用于某些单元格。我只想删除这个特定的 ConditionalFormat(formatConditionObj)。

谁能帮我。

4

2 回答 2

1

当单元格中有多个条件时,不能像这样删除格式条件。您必须通过它的编号来处理条件格式才能删除它。

考虑这个例子。(经过测试和尝试

下面的代码创建一个新工作簿,并在工作表 1 中在单元格 A1 中创建 2 个格式条件。在创建 2 个条件后,应用程序将暂停并显示一个消息框。转到 Excel 并手动检查创建的条件格式。(快照 1)。完成后,单击OK消息框中的。然后代码将删除条件 1,然后通过显示一个消息框再次暂停。转到 Excel 并手动检查条件格式。您会注意到只剩下一种(准确地说是第二种)条件格式。(快照 2)

    private void btnSearch_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application xlexcel;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;

        xlexcel = new Excel.Application();
        xlexcel.Visible = true;

        //~~> Add a File
        xlWorkBook = xlexcel.Workbooks.Add();
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        //~~> Create 2 Conditions
        xlWorkSheet.Cells[1, 1].FormatConditions.Add( 1,5,"=5");
        xlWorkSheet.Cells[1, 1].FormatConditions.Add(1, 5, "=10");

        MessageBox.Show("Wait");
        //~~> Now if you check the Excel file, Cell A1 has two conditional formats.
        //~~> See Snapshot 1

        //~~> Delete the first condition
        xlWorkSheet.Cells[1, 1].formatconditions(1).delete();

        MessageBox.Show("Wait");
        //~~> Now if you check the Excel file, Cell A1 has only 1 conditional format.
        //~~> See Snapshot 2
    }

快照 1

在此处输入图像描述

快照 2

在此处输入图像描述

于 2012-08-08T07:46:21.700 回答
0

formatConditionObj.Delete();

这对我不起作用。...仅删除最后的单元格格式。

我没有看到。如果我坚持参考我可以打电话Delete,它的工作原理。这是我的测试,其中一个范围包含不同的单元格。然后我格式化,等待和删除。

测试

于 2020-08-13T19:43:53.653 回答