<tfoot id='hKrnU'></tfoot>
    <i id='hKrnU'><tr id='hKrnU'><dt id='hKrnU'><q id='hKrnU'><span id='hKrnU'><b id='hKrnU'><form id='hKrnU'><ins id='hKrnU'></ins><ul id='hKrnU'></ul><sub id='hKrnU'></sub></form><legend id='hKrnU'></legend><bdo id='hKrnU'><pre id='hKrnU'><center id='hKrnU'></center></pre></bdo></b><th id='hKrnU'></th></span></q></dt></tr></i><div id='hKrnU'><tfoot id='hKrnU'></tfoot><dl id='hKrnU'><fieldset id='hKrnU'></fieldset></dl></div>

    1. <small id='hKrnU'></small><noframes id='hKrnU'>

        <bdo id='hKrnU'></bdo><ul id='hKrnU'></ul>

      <legend id='hKrnU'><style id='hKrnU'><dir id='hKrnU'><q id='hKrnU'></q></dir></style></legend>
    2. Excel 互操作在装有 Office 2007 的机器上工作,但在装有 Office 2010 的机器上失败

      时间:2023-07-26
      <i id='ouE14'><tr id='ouE14'><dt id='ouE14'><q id='ouE14'><span id='ouE14'><b id='ouE14'><form id='ouE14'><ins id='ouE14'></ins><ul id='ouE14'></ul><sub id='ouE14'></sub></form><legend id='ouE14'></legend><bdo id='ouE14'><pre id='ouE14'><center id='ouE14'></center></pre></bdo></b><th id='ouE14'></th></span></q></dt></tr></i><div id='ouE14'><tfoot id='ouE14'></tfoot><dl id='ouE14'><fieldset id='ouE14'></fieldset></dl></div>
      <legend id='ouE14'><style id='ouE14'><dir id='ouE14'><q id='ouE14'></q></dir></style></legend>
      <tfoot id='ouE14'></tfoot>
        <tbody id='ouE14'></tbody>
        <bdo id='ouE14'></bdo><ul id='ouE14'></ul>

                <small id='ouE14'></small><noframes id='ouE14'>

                本文介绍了Excel 互操作在装有 Office 2007 的机器上工作,但在装有 Office 2010 的机器上失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我有一个 C# WPF (.NET 4.0) 应用程序,它使用 Excel 互操作从 Excel 文件中读取数据.

                I have a C# WPF (.NET 4.0) application that uses Excel interop to read data from an Excel file.

                当我在装有 Excel 2007 的开发机器上运行此应用程序时,它运行良好.当我在另一台安装了 Excel 2010 的机器上运行它时,它会失败并显示以下错误消息:

                When I run this app on my development machine, which has Excel 2007, it works fine. When I run it on another machine that has Excel 2010 installed on it, it fails with the following error message:

                System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG)).

                System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)).

                尝试创建 Microsoft.Office.Interop.Excel.Application 对象时失败,如:

                The failure occurs when attempting to create a Microsoft.Office.Interop.Excel.Application object, as in:

                var app = new Application();
                

                我的项目引用了Microsoft.Office.Interop.Excel.dll(版本14.0.0.0,运行时版本v2.0.50727),位于:

                My project has a reference to Microsoft.Office.Interop.Excel.dll (version 14.0.0.0, runtime version v2.0.50727), which is located at:

                C:Program FilesMicrosoft Visual Studio 10.0Visual Studio Tools for OfficePIAOffice14Microsoft.Office.Interop.Excel.dll

                C:Program FilesMicrosoft Visual Studio 10.0Visual Studio Tools for OfficePIAOffice14Microsoft.Office.Interop.Excel.dll

                我尝试在引用的 dll 上使用默认设置运行应用程序:

                I tried to run the app with the default settings on the referenced dll:

                • 复制本地 = 错误
                • 嵌入互操作类型 = True
                • 特定版本 = True

                我还尝试在引用的 dll 上使用以下设置运行应用程序:

                I also tried to run the app with the following settings on the referenced dll:

                • 复制本地 = True
                • 嵌入互操作类型 = False
                • 特定版本 = True

                但在装有 Office 2010 的机器上,这些尝试都没有奏效.

                But on the machine with Office 2010, neither of these attempts worked.

                其他说明:装有 Office 2010 的机器是 64 位 w/Windows 7.我的开发机器是装有 Windows XP 的 X86.

                Other notes: The machine with Office 2010 is 64-bit w/ Windows 7. My development machine is X86 with Windows XP.

                问题

                是什么导致了类未注册"异常,我该如何解决?

                What is causing the "class not registered" exception and how do I fix it?

                编辑

                针对 Alex 的回答,我尝试将应用程序构建为 Any CPU、X86 和 X64,但没有任何区别.我仍然收到相同的类未注册"错误.

                In response to Alex's answer, I tried building the app as Any CPU, X86, and X64, but it made no difference. I'm still getting the same "class not registered" error.

                编辑 2

                刚刚在装有 Office 2010 的 32 位计算机上试用了该应用程序.没有错误.因此,可能是特定机器出了问题,或者可能是 64 位和 Office 2010 的组合.

                Just tried the app on a 32-bit machine with Office 2010. No errors. So, it could be something wrong with the particular machine, or it could be the combination of 64-bit and Office 2010.

                编辑 3

                好的,现在我已经在另一台装有 Office 2010 的 64 位计算机上对其进行了测试.再次没有错误.我认为这意味着特定机器有问题,这不是我的软件的错.啊编程.

                Okay, so now I've tested it on a different 64-bit machine with Office 2010. Again no errors. I think this means something is wrong with the particular machine and it's not my software's fault. Ahh programming.

                推荐答案

                初步回答:我的软件很好,但特定机器上的设置有问题.

                Preliminary answer: my software was fine and something was wrong with the setup on that particular machine.

                编辑

                我刚刚发现了一些可能是问题的根源.问题机器有Office,但设置为click-to-run(在互联网上运行)而不是 基于 MSI(从 EXE 运行).这意味着某些注册表设置、DLL、组件等对 Microsoft.Office.Interop.Excel 不可用,因此会失败.

                I just found out something that is probably the source of the problem. The problem machine has Office, but it is set up as click-to-run (runs off the internet) rather than MSI-based (runs from an EXE). This means that certain registry settings, DLLs, components, etc. are not available to Microsoft.Office.Interop.Excel, so it fails.

                编辑 2

                这绝对是问题所在.刚刚升级到基于 MSI 的完整 Office 安装,一切正常.

                That was definitely the problem. Just upgraded to a full MSI-based installation of Office, and everything works great.

                编辑 3

                将此作为错误添加到 Microsoft Connect:

                Added this as a bug to Microsoft Connect:

                https://connect.microsoft.com/VisualStudio/feedback/details/672276/excel-interop-fails-on-machine-where-office-is-installed-as-click-运行#details

                这篇关于Excel 互操作在装有 Office 2007 的机器上工作,但在装有 Office 2010 的机器上失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:为什么需要在 c# 中使用 DispId 注释? 下一篇:通过 RequestComAddInAutomationService 在 C# .NET 中的 VSTO 单元测试 O

                相关文章

                <legend id='KGqEh'><style id='KGqEh'><dir id='KGqEh'><q id='KGqEh'></q></dir></style></legend>

                  <tfoot id='KGqEh'></tfoot>
                1. <small id='KGqEh'></small><noframes id='KGqEh'>

                  • <bdo id='KGqEh'></bdo><ul id='KGqEh'></ul>
                    <i id='KGqEh'><tr id='KGqEh'><dt id='KGqEh'><q id='KGqEh'><span id='KGqEh'><b id='KGqEh'><form id='KGqEh'><ins id='KGqEh'></ins><ul id='KGqEh'></ul><sub id='KGqEh'></sub></form><legend id='KGqEh'></legend><bdo id='KGqEh'><pre id='KGqEh'><center id='KGqEh'></center></pre></bdo></b><th id='KGqEh'></th></span></q></dt></tr></i><div id='KGqEh'><tfoot id='KGqEh'></tfoot><dl id='KGqEh'><fieldset id='KGqEh'></fieldset></dl></div>