我一直在寻找这个,但无法在任何地方找到答案,所以希望这里有人可以提供帮助。
我在C#中使用WinForms应用程序,我使用WordApplcation.CompareDocuments来比较两个文档,并获得一个结果文档,其中的更改标记为Revisions。
这很好用,除了修改隐藏文本框内的东西(我还不关心),我得到了我想要的东西。
下一步是计算修改了多少单词 - 特别是wdRevisionDelete和wdRevisonInsert。
唯一问题是final.Revisions有时是空的或包含大量数据(超过500字)。
我在MSDN页面上阅读了Revisions.Count那个文档。修订版不会显示所有修订版本,只会显示主要故事并且我必须使用范围 - 但这没有帮助。
这是我目前的代码:
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中接受或拒绝
我可能会忽略的任何想法?
编辑:我注意到一些奇怪的事情 - 当我尝试保存为txt文件的原始doc文件报告0更改虽然CompareDocuments标记(正确)一些,我注意到并非所有页面保存到txt文件 - 包括所有带修订的区域。
我尝试使用Word 2007和LibreOffice 3.3转换为txt文件 - 两者都有相同的结果(缺少大量文本)。
可能会以某种方式相关。
想知道这个文件有什么问题。
有什么想法吗?
答案 0 :(得分:0)
很明显,该代码没有任何问题,可以处理更简单的文件。
我正在测试的文件有些奇怪。
就像我的编辑说的那样,甚至无法将它们妥善保存为txt文件。
任何知道可能导致这种情况的人都知道,同时这个解决了Word文档文件问题。