当前位置: 首页 > 知识库问答 >
问题:

如何解决错误:由于以下错误而失败:80040154类未注册

艾修筠
2023-03-14

如何解决下面的错误。在运行时获取时发生此错误。

由于以下错误,检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败:80040154类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

代码:此代码用于将word转换为pdf文档文件。我在这一行遇到了错误。

Application wordApp = new Microsoft.Office.Interop.Word.Application();
Document wordDocument = new Document();           
private void ConvertWord2PDF(string inputFile, string outputPath)
{

        try
        {
            if (outputPath.Equals("") || !File.Exists(inputFile))
            {
                throw new Exception("Either file does not exist or invalid output path");
            }

            // app to open the document belower
            Application wordApp = new Microsoft.Office.Interop.Word.Application();
            Document wordDocument = new Document();

            // input variables
            object objInputFile = inputFile;
            object missParam = Type.Missing;

            wordDocument = wordApp.Documents.Open(ref objInputFile, ref missParam, ref missParam, ref missParam,
                ref missParam, ref missParam, ref missParam, ref missParam, ref missParam, ref missParam,
                ref missParam, ref missParam, ref missParam, ref missParam, ref missParam, ref missParam);

            if (wordDocument != null)
            {
                // make the convertion
                wordDocument.ExportAsFixedFormat(outputPath, WdExportFormat.wdExportFormatPDF, false,
                    WdExportOptimizeFor.wdExportOptimizeForOnScreen, WdExportRange.wdExportAllDocument,
                    0, 0, WdExportItem.wdExportDocumentContent, true, true,
                    WdExportCreateBookmarks.wdExportCreateWordBookmarks, true, true, false, ref missParam);
            }

            // close document and quit application
            wordDocument.Close();
            wordApp.Quit();

            Response.Write("File successfully converted");
            //ClearTextBoxes();
        }
        catch (Exception e)
        {
            throw e;
        }
    }

共有2个答案

谯志诚
2023-03-14

由于以下错误,检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败:80040154类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

看起来你在做Office的服务器端自动化,这是不可以的,原因如下:

Office服务器端自动化的考虑因素

在服务器端,使用OpenXML或更好的ClosedXML,并将其作为docx文件处理,更可靠(也更受支持)。既然你要转换成PDF格式,我建议你看看这个QA。。。

汪典
2023-03-14

服务或web应用(如IIS)中不应使用Office应用。第二,互操作。单词dll就像一个头文件,实际上需要安装Office\word才能使用它。

请注意微软在这方面的立场:

Microsoft目前不建议也不支持从任何无人参与、非交互的客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在这种环境下运行Office时,Office可能会表现出不稳定的行为和/或死锁。

在ASP中预览和转换Word文件。Net-使用OpenXML

 类似资料:
  • 我试图执行一个可执行文件,但收到错误消息: 系统运行时。互操作服务。COMException(0x80040154):由于以下错误,检索CLSID为{4C2901D1-5354-11D4-A6F9-00508B4ACA2C}的组件的COM类工厂失败:80040154。 此exe在其自己的文件夹中带有4个dll文件: ATTPRV32.dll Csta32.dll 互操作AXS_INPROCLib.

  • 我的公司正在开发一个利用博世视频SDK的应用程序。我已经在我的安装项目中包含了所需的DLL文件,我相信它们在我的项目安装时正在注册,但我在运行时遇到了“未注册类”错误。。 我怀疑我的问题来自这样一个事实,即这个应用程序是在x64中编译的,并且使用BOSCH视频软件开发工具包中的64位DLL。这是有意的,我们绝对希望它以64位模式安装和运行。 确切的错误消息是“由于以下错误,为CLSID为{D12F

  • 我有一个UWP应用程序,我想与另一个程序(有线广播)接口。Wirecast建议的方法是调用以下代码: 当我从UWP应用程序调用此代码时,我得到以下错误: 系统运行时。互操作服务。COMException:“使用CoCreateInstanceFromApp创建CLSID为{A416C15B-A073-4994-8DB5-87527A41B2FA}的COM组件实例失败,原因是以下错误:8004015

  • 我正在尝试在同一台机器上设置ElasticSearch、Logstash和Kibana。我设置了: elasticsearch-1.4.0 logstash-1.4.2 kibana-3.1.2 根据本文,我遵循了所有步骤:http://aarvik.dk/a-bit-on-elasticsearch-logstash-kibana-the-elk-stack/ 我运行了ElasticSearch

  • 在64位计算机上运行Visual Studio 2012应用程序时,会显示以下错误消息: 由于以下错误,检索CLSID为{F2D4F4E5-EEA1-46FF-A83B-A270C92DAE4B}的组件的COM类工厂失败:80040154类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG)) 我正在visualstudio中使用Inventor packa

  • 我正试图在openstack集群上的kubernetes上创建一个类型为LoadBalancer的服务,但它无法创建LoadBalancer,并显示中子错误(下面是确切的错误片段)。 下面是网站。yaml文件: [根]#kubectl创建-f web。亚马尔 [root]#kubectl描述svc web 创建负载平衡器时出错(将重试):无法为服务默认值创建负载平衡器/web:访问[发布]时需要H