如何使用c#在Word文档中迭代和计数修订

本文关键字:迭代 何使用 Word 文档 | 更新日期: 2023-09-27 18:07:17

我一直在寻找这个问题,但在任何地方都找不到答案,所以希望这里有人可以帮助。

我正在做一个WinForms应用程序在c#中,我使用wordapplication。比较两个文档,并得到一个结果文档,其中的更改标记为修订。

这个工作得很好,除了在文本框中隐藏内容的修订(我还不关心),我得到了我想要的。

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

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

我在MSDN页面上阅读了修订。数一下那个文档。修订不会显示所有的修订,而只显示主要故事的修订,我必须使用范围-但这没有帮助。

这是我当前的代码:

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创建的Word文档。CompareDocuments

所以,正如我所说的,根据MSDN,我使用范围。修订而不是文件。修改,一节一节。

只有一个文档有6个版本,没有显示任何版本,而其他文档有100个版本。

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

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

你知道我可能忽略了什么吗?

EDIT:我注意到一些奇怪的事情-当我试图将报告0变化的原始文档文件保存为txt文件时,尽管CompareDocuments标记(正确地)一些,我注意到并非所有页面都保存到txt文件-其中包括所有有修订的区域。

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

可能有关系

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

任何想法?

如何使用c#在Word文档中迭代和计数修订

显然这段代码没有问题,可以在更简单的文件上工作。

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

就像我的编辑说的,甚至不能正确地将它们保存为txt文件。

任何人知道什么可能导致这个让我知道,同时这个是作为Word文档文件问题解决的。