【问题标题】:Excel 12 Interop HRESULT 0x800A03ECExcel 12 互操作 HRESULT 0x800A03EC
【发布时间】:2011-12-12 17:54:27
【问题描述】:

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

我的开发机器有 Windows 7 64bit 和 Microsoft Office 2007,程序运行良好。

我的另存为代码是这样的:

      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?

更新

我已经在同样是 64 位的 Windows XP 机器上安装了 Office 2007 和 Office 2010 的互操作程序集,但我仍然收到同样的错误。会不会是程序集的权限问题?

【问题讨论】:

  • 我在 Windows XP x64 上收到此错误,而不是在 Windows 7 上。
  • 这是一个 Excel 错误,而不是 Windows 错误。当你用谷歌搜索“excel saveas error 1004”时,会有更多的点击。您的问题中没有足够的信息来帮助我们帮助您缩小范围。

标签: c# excel com-interop


【解决方案1】:
  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 来生成电子表格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多