来自HRESULT的exception:0x800A03EC

任何帮助表示赞赏:

我正在VS2010中开发一个与Excel交互的C#.Net应用程序。 该应用程序在我的本地机器上正常工作。 上传到远程Windows 2003服务器,但是,打破了应用程序。

本来,我收到以下消息

  • 检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80070005

谷歌search后(这提示了权限问题)我试过这个问题:

  • 安装Excel 2007
  • 进入远程服务器上的组件服务,并按照这里的说明: http : //blog.crowe.co.nz/archive/2006/03/02/589.aspx

现在我在同一个操作中得到这个消息:

  • 来自HRESULT的exception:0x800A03EC

谷歌search似乎暗示这是一个版本匹配错误。 但是,本地计算机和远程服务器都使用Excel 2007。

任何build议将是非常受欢迎的。 提前致谢。

-Daniel

如果您尝试将数据网格视图发送到Excel电子表格,请记住,Excel单元格始于Cell(1,1),但datagridview.rows和datagridview.columns索引为0.因此,如果尝试发送datagridviewcell(0 ,0)到Excel单元格(0,0),您将从HRESULT:0x800A03EC获得exception

我疯狂地search了15分钟,然后把我的手掌into到我的额头上。

Excel.Cells(0,0)=Datagridviewcellvalue // throws HRESULT: 0x800A03EC error Excel.Cells(1,1) = Datagridviewcellvalue //no error 

build议:

  1. 从一个线程控制Excel并使用“en_US”文化。 如果使用非英语文化,触发0x800A03EC的属性有很多。 是意外您的Windows 2003使用另一种系统语言,如果是的话,这可能是问题。 无需重新安装Windows! 只需在您的应用程序中指定线索的文化。
  2. 检查使用范围设置的string的长度。 有911个字符的限制。 您可以分别为具有较大string的单元格设置它们。 这是乏味的,但我找不到任何其他方式来解决这个问题。

我能够通过全面禁用所有加载项并重新启动应用程序来解决此问题。 然后我重新启用有用的,看Excel的行为。 因人而异

从“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files”这个文件夹中删除临时的ASP.Net文件,请在此之后检查。

检查之后,它不工作,然后重新启动系统,并检查…有可能发生这种情况,因为损坏的文件。 所以做一个光盘检查。

谢谢