区分Excel Interop操作引发的exception
我正在使用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工作时出错,对不起,太糟糕了”。
我已经与Excel互操作了好几年了,但是我还没find办法。 您最好的select是在潜在问题发生之前进行检查。 我希望有更好的,但据我所知,没有。
编辑
您可以在VBA中捕获不同的错误,所以Excel本身可以区分各种错误,但是我相信.NET会将所有这些错误都分解为一个COMException类,它不会提供任何详细信息。
我发现这篇文章详细介绍了VBA错误代码:
http://support.microsoft.com/kb/146864
COMException
的全部意义在于它从COM的一面回来。 通常,在COM中,错误条件由来自特定方法的HRESULT
返回值不为0来表示。
不幸的是,这是错误信息在“合同”中的内容。 所以你得到的错误值(0x800A03EC是相同的值-2146827284)。 .NET方面的东西没有进一步的信息。