Excel Interop - 如何使用格式搜索单元格?

Excel Interop - How to search cell with format?

我看到 Excel interop 有 Find method 但我不知道如何使用它。

我想在范围 (Microsoft.Office.Interop.Excel.Range) 中搜索具有特定颜色的单元格。 在 Excel 中,您将这样做:

  1. Ctrl + F 打开 'Find and Replace' 对话框。将文本框 'Find what:' 留空。
  2. 单击按钮 [选项 >>] 或 Alt+T
  3. 单击按钮 [格式...] 或 Alt+M
  4. 转到选项卡字体 -> 单击颜色选项 (Alt+C) 并选择颜色。
  5. 点击确定,然后点击[查找下一个]

我只想使用 Excel Interop 以编程方式执行此操作。

感谢阅读:)

调用Find()方法前需要设置Application.FindFormat属性

例如如果要使用 "Find and Replace" 对话框的标准设置搜索红细胞,可以使用以下代码:

// These are the search options of the "Format" dialog.
_application.FindFormat.Font.Color = 255;
_application.FindFormat.Font.TintAndShade = 0;

// cell is null if nothing was found.
var cell = _application.Cells.Find(What: "", After: _application.ActiveCell,
    LookIn: XlFindLookIn.xlFormulas, LookAt: XlLookAt.xlPart,
    SearchOrder: XlSearchOrder.xlByRows, SearchDirection: XlSearchDirection.xlNext,
    // It's important to set SearchFormat to true.
    MatchCase: false, SearchFormat: true);

如果要搜索当前主题的强调色2,也可以这样做:

_application.FindFormat.Font.ThemeColor = XlThemeColor.xlThemeColorAccent2;

如果您想模拟 "Find and Replace" 对话框的确切行为,您可以在找到单元格后调用 cell.Activate()