我一直在寻找这个问题,但找不到任何答案,所以希望这里的人可以提供帮助。
我正在用 C# 编写一个 WinForms 应用程序,其中我使用 Word Application.Compare Documents 来比较两个文档并获取一个结果文档,其中更改标记为修订版。
这工作得很好,除了将内容隐藏在文本框内的修订(我还不关心)之外,我得到了我想要的。
因此,下一步是计算有多少单词被修改 - 特别是 wdRevisionDelete 和 wdRevisonInsert。
唯一的问题是最终的。修订版有时是空的或包含大量数据(超过 500 个字)。
我在 MSDN 页面上阅读了 Revisions.Count 该文档。Revisions 不会显示所有修订,而只会显示主要故事的修订,并且我必须使用范围 - 但这没有帮助。
这是我当前的代码:
using Word = Microsoft.Office.Interop.Word;
And
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 中接受或拒绝
关于我可能会忽略的内容有什么想法吗?
EDIT:我注意到一些奇怪的事情 - 当我尝试将原始文档文件另存为 txt 文件时,报告 0 更改,尽管 CompareDocuments 标记(正确)了一些更改,我注意到并非所有页面都保存到 txt 文件 - 包括所有区域有修订。
我尝试使用 Word 2007 和 LibreOffice 3.3 转换为 txt 文件 - 两者都有相同的结果(缺少大量文本)。
可能有某种关系。
想知道这个文件有什么问题。
有任何想法吗?