c# - 如何使用 C# 迭代和计算 Word 文档中的修订?

标签 c# count ms-word interop revisions

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

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

这很好用,除了将内容隐藏在文本框内的修订(我现在还不关心)之外,我得到了我想要的。

因此下一步是计算修改了多少个单词 - 特别是 wdRevisionDelete 和 wdRevisonInsert。

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

我在 MSDN 页面上阅读了 Revisions。计算该文档。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 个。

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

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

有什么我可能忽略的想法吗?

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

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

可能以某种方式相关。

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

有什么想法吗?

最佳答案

显然,该代码没有任何问题,并且可以处理更简单的文件。

我测试的文件有些奇怪。

正如我的编辑所说,甚至无法将它们正确保存为 txt 文件。

谁知道这可能是什么原因,请告诉我,同时这个问题已作为 Word 文档文件问题解决。

关于c# - 如何使用 C# 迭代和计算 Word 文档中的修订?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286484/

相关文章:

c++ - 从 c/c++ 应用程序写入 *.doc 或 *.rtf 文件

c# - 创建轮廓时,谁应该关心 MemStorage 的重新分配?

c# - 向 MediaComposition 添加背景颜色

php - COUNT操作前如何检查?

java - 在java中计算平均值

python - list.count() 表示列表中有一项时有两项

java - Apache POI - 在Word文件中编辑图表数据时,它返回表单中定义的数据

c# - 使用正则表达式匹配包含数字字母和破折号的字符串

c# - 绑定(bind)对象 DataGridView C#

VBA将另一个UserFormB的值输入到UserFormA的TextBox