4

我一直在寻找这个,但在任何地方都找不到答案,所以希望这里的 aomeone 可以提供帮助。

我在 C# 中做一个 WinForms 应用程序,我使用 WordApplcation.CompareDocuments 来比较两个文档并获得一个结果文档,其中的更改标记为 Revisions。

这很好用,除了在文本框中隐藏东西的修订(我现在还不关心),我得到了我想要的。

所以下一步是计算有多少单词被修改了——特别是 wdRevisionDelete 和 wdRevisonInsert。

唯一的问题是最终的。修订有时是空的或包含大量数据(超过 500 字)。

我在 MSDN 页面上阅读了 Revisions.Count 该文档。Revisions 不会显示所有修订,而只会显示主要故事中的修订,并且我必须使用范围 - 但这没有帮助。

这是我当前的代码:

using Word = Microsoft.Office.Interop.Word;

foreach (Word.Section s in final.Sections)
{
        foreach (Word.Revision r in s.Range.Revisions)
        {
                 counter += r.Range.Words.Count;
                 if (r.Type == Word.WdRevisionType.wdRevisionDelete)
                    delcnt += r.Range.Words.Count;
                 if (r.Type == Word.WdRevisionType.wdRevisionInsert)
                    inscnt += r.Range.Words.Count;
        }
}

final 是 WordApplication.CompareDocuments 创建的 Word 文档

所以,正如我所说,根据 MSDN,我使用 range.Revision 而不是 document.Revision,并逐节进行。

只有一份包含六次修订的文档没有显示,而其他文档显示了 100 次。

所以我的问题是,如何使用修订来计算添加/删除的单词。

我已经打开了 CompareDocuments 在 Word 2007 中创建的文档,并且修订已正确标记,并且可以在 Word 中接受或拒绝

关于我可能忽略的任何想法?

编辑:我注意到一些奇怪的事情 - 当我尝试将报告 0 更改的原始 doc 文件保存为 txt 文件时,尽管 CompareDocuments 标记(正确)一些,我注意到并非所有页面都保存到 txt 文件中 - 其中包括有修订的所有领域。

我尝试使用 Word 2007 和 LibreOffice 3.3 转换为 txt 文件 - 两者都有相同的结果(大量文本丢失)。

可能有某种关联。

想知道这个文件有什么问题。

有任何想法吗?

4

1 回答 1

0

好吧,显然该代码没有任何问题,并且适用于更简单的文件。

我正在测试的文件有点奇怪。

就像我的编辑说的那样,甚至无法将它们正确保存为 txt 文件。

任何知道可能导致此问题的原因的人都可以告诉我,同时此问题已作为 Word 文档文件问题解决。

于 2011-09-06T15:56:18.327 回答