0

我想并排比较 c# 中的 2 个 word 文档,并将 word 文档(.doc 或 .docx)中的不同文本或句子作为报告,并且报告可以并排突出显示差异,并使用以下代码

Application wordApp = new Application();

        wordApp.Visible = true;

        object wordTrue = (object)true;

        object wordFalse = (object)false;

        object fileToOpen = @"D:\MyWorks\test1.doc";

        object missing = Type.Missing;

        Document doc1 = wordApp.Documents.Open(ref fileToOpen,

               ref missing, ref wordFalse, ref wordFalse, ref missing,

               ref missing, ref missing, ref missing, ref missing,

               ref missing, ref missing, ref wordTrue, ref missing,

               ref missing, ref missing, ref missing);



        object fileToOpen1 = @"D:\MyWorks\test2.doc";

        Document doc2 = wordApp.Documents.Open(ref fileToOpen1,

               ref missing, ref wordFalse, ref wordFalse, ref missing,

               ref missing, ref missing, ref missing, ref missing,

               ref missing, ref missing, ref missing, ref missing,

               ref missing, ref missing, ref missing);



        Document doc = wordApp.CompareDocuments(doc1, doc2, WdCompareDestination.wdCompareDestinationNew, WdGranularity.wdGranularityWordLevel,

            true, true, true, true, true, true, true, true, true, true, "", true);

上面的代码给出了以下错误

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

请在这方面帮助我,我想在不包含 ms-office 安装版本的系统中运行它,请提供一些指导

谢谢

斯里

4

1 回答 1

2

你不能在没有安装 Office 的情况下使用 Microsoft Office Interop - 这完全是不可能的。此外:您在服务器环境中,Microsoft 不建议运行 Office,因为存在很多线程问题,有时 Office 的消息框会挂起您的线程。

您有两个选择: - 使用 Office Open XML Sdk 来比较文档,但这需要大量工作,因为它与 Interop 非常不同。有一本免费的书“Open XML Explained”可以帮助您入门。- 使用封装 Office Open XMl SDK 的库 - 我从来没有使用这些库来表示单词,所以我不能给你建议。

于 2013-06-27T09:20:21.683 回答