2

我正在使用Microsoft.Office.Interop.Excel库从我的 C# 应用程序中将数据导出到 Excel。

sheet.Cells[currentRow, 1])使用无效currentRow值调用,会产生一条System.Runtime.InteropServices.COMException消息:

"Exception from HRESULT: 0x800A03EC"

ErrorCode-2146827284

但是,我收到了完全相同的错误代码,用于命令 Excel 保存到写保护文件。

有没有办法区分从 Excel 收到的 COMExceptions,以便我可以相应地处理它们? 我不想让我的用户说“使用 Excel 时出了点问题,对不起,傻瓜”。

4

2 回答 2

1

我使用 Excel 互操作已经好几年了,但我还没有找到方法。最好的办法是在潜在问题发生之前检查它们。我希望有更好的东西,但据我所知没有。

编辑
您可以在 VBA 中捕获不同的错误,因此 Excel 本身确实区分了各种错误,但我相信 .NET 将所有这些错误都集中到一个 COMException 类中,它不会为您提供详细信息。

我发现这篇文章详细介绍了 VBA 错误代码:http:
//support.microsoft.com/kb/146864

于 2012-09-19T13:26:44.323 回答
1

a 的全部意义COMException在于它是从 COM 方面回来的。通常,在 COM 中,错误条件由HRESULT特定方法的返回值不为 0 表示。

不幸的是,这就是 COM“合同”中内置的错误信息的范围。所以你得到错误值(0x800A03EC 与 -2146827284 的值相同)。.NET 方面没有更多信息。

于 2012-09-19T13:31:49.357 回答