Excel 12 Interop HRESULT 0x800A03EC

时间:2011-12-12 17:54:27

标签: c# excel com-interop

我正在使用Excel 12 Interop在C#中编写程序,当我在安装了Microsoft Office 2003的Windows xp机器上运行它时,我的程序会抛出HRESULT 0x800A03EC异常。

我的开发机器有Windows 7 64位和Microsoft Office 2007,程序运行正常。

我的SaveAs代码是这样的:

      wbk.SaveAs(path, Excel.XlFileFormat.xlExcel8, 
                   Type.Missing, 
                   Type.Missing,
                   Type.Missing,
                   Type.Missing,
                   Excel.XlSaveAsAccessMode.xlExclusive,
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing);

我是否可以使用任何变通方法,因此我不必在运行Windows XP的计算机上安装Office 2007?

更新

我已经在Windows XP计算机上安装了Office 2007和Office 2010的互操作程序集,这也是64位,我仍然收到相同的错误。这可能是程序集的权限问题吗?

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用Office 2003互操作重新编译,虽然这只是.NET 1.1和(我认为)只能通过Office 2003安装程序获得 - 在每个应用程序下查找“.NET自动化支持”或类似内容。我在2+中使用为.NET 1.1构建的代码时遇到了问题,但是,特别是构造函数失败 - 但是完全可重复,所以如果它工作则没有问题。

  2. 您可以直接使用Excel COM对象。然后,结果应适用于Excel 7及更高版本。函数签名大致相同,但您现在需要将所有枚举转换为整数以传递到函数中。

  3. 如果您只是使用Excel创建一个简单的电子表格(或相对简单的电子表格),您可以完全跳过Excel并use one of these libraries来生成电子表格。