使用 VS2010 和 Excel 2010 访问 FormatCondition 时出现异常

发布于 2024-12-10 07:13:42 字数 714 浏览 0 评论 0原文

当我尝试从 FormatConditions 集合访问 FormatCondition 项时,出现以下异常。

无法将类型“System.__ComObject”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel.FormatCondition”。此操作失败,因为对 IID 为“{00024425-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(HRESULT 异常:0x80004002 (E_NOINTERFACE)) .

我正在使用 VS2010 SP1、C#、Excel 2010 32 位

到目前为止,我创建了一个 Excel 电子表格,并向单元格 B3 添加了条件格式。

在代码 I 中:

  1. 打开电子表格。
  2. get cell b3
  3. 验证 FormatConditions.Count 返回 1。

当我尝试以下操作时,我收到上述异常:

fmtCond = (Excel.FormatCondition) testCell.FormatConditions.Item(1);

在另一台 PC 上使用 VS2005 和 Excel 2007 构建时,我使用的代码似乎工作正常。

I get the following exception when I try to access a FormatCondition item from a FormatConditions collection.

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.FormatCondition'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00024425-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

I'm using VS2010 SP1, C#, Excel 2010 32 bit

So far I created an excel spreadsheet and added Conditional Formatting to cell B3.

In code I:

  1. open the spreadsheet.
  2. get cell b3
  3. verify that FormatConditions.Count returns 1.

I get the above exception when I try the following:

fmtCond = (Excel.FormatCondition) testCell.FormatConditions.Item(1);

The code I'm using seems to work fine when build w/VS2005 and Excel 2007 on another PC.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

君勿笑 2024-12-17 07:13:42

我发现,当您单独设置属性时,它可以工作,而不是尝试将所有格式条件放在一起:

DestRange.FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, SourceRange.FormatConditions(1).Operator, SourceRange.FormatConditions(1).Formula1)

DestRange.FormatConditions(1).Interior.ColorIndex = SourceRange.FormatConditions(1).Interior.ColorIndex

其中 DestRangeSourceRange 是您要传输的区域属性分别为 和原始范围。如果您已指定,您可能需要获取 FormatConditions 的其他属性。

Rather than trying to grab all of the format conditions together, I've found it works when you set the properties individually:

DestRange.FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, SourceRange.FormatConditions(1).Operator, SourceRange.FormatConditions(1).Formula1)

DestRange.FormatConditions(1).Interior.ColorIndex = SourceRange.FormatConditions(1).Interior.ColorIndex

where DestRange and SourceRange are the region you are transferring the properties to, and the original range, respectively. You may need to grab additional properties of the FormatConditions if you have specified them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文