我正在使用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时出错了,抱歉,傻逼。”
答案 0 :(得分:1)
我已经使用Excel互操作多年了,但我还没找到办法。您最好的选择是在潜在问题发生之前进行检查。我希望有更好的东西,但据我所知,没有。
修改强>
您可以在VBA中捕获不同的错误,因此Excel本身可以区分各种错误,但我相信.NET会将所有这些错误归结为单个COMException类,而不会为您提供详细信息。
我发现这篇文章详细说明了VBA错误代码:
http://support.microsoft.com/kb/146864
答案 1 :(得分:1)
COMException
的全部意义在于它从COM方面回来了。通常,在COM中,错误条件由特定方法不为0的HRESULT
返回值发出信号。
不幸的是,这是COM“合同”中内置的错误信息的范围。因此,您将获得错误值(0x800A03EC与-2146827284的值相同)。事情的.NET方面没有进一步的信息。