如何使用 C# 迭代和统计 Word 文档中的修订次数?

2023-12-06

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

我正在用 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 文件 - 两者都有相同的结果(缺少大量文本)。

可能有某种关系。

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

有任何想法吗?


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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C# 迭代和统计 Word 文档中的修订次数? 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • html 电子邮件的 mail() 标头问题

    我正在尝试用 php 为网站编写错误报告功能 我无法获得正确的标题 因此电子邮件将显示为 html 这是代码 if isset POST submit browser SERVER HTTP USER AGENT page POST pag
  • 安装成功后运行“mongod”命令时权限被拒绝

    我成功安装了mongodb 然后运行后出现此错误mongod命令 2015 08 21T20 48 25 862 0530 I STORAGE initandlisten initAndListen 中的异常 98 无法创建 打开锁定文件
  • 用于不同元素名称的 XSD

    我想为 XMl 形成一个 xsd 架构 其元素范围为 z1 zx 是否可以在 xml 模式中定义它 而不必写出声明每个元素 请看下面
  • Java中检查一个类对象是否是另一个类对象的子类

    我正在研究 Java 的反射 API 并尝试处理一些字段 现在我不得不确定我的字段的类型 字符串很简单 只要做就可以了myField getType equals String class 这同样适用于其他非派生类 但如何检查派生类呢 例如
  • 使用 C# 正则表达式转换字符串中的大小写

    我怎样才能转换这个字符串 bKk 035A paint House V003 to BKK 035a paint House v003 使用正则表达式 例如 Regex Replace 此正则表达式匹配字符串
  • 如何获取HttpWebResponseMessage的内容

    我有一个 asp net MVC razor C 应用程序 它有 1 个控制器和 1 个接受参数的 POST 函数 该函数返回一个 HttpResponseMessage public class VersionController Con
  • 手动清理项目内的 obj 文件安全吗?

    我的目标文件包含调试 发布文件夹和一些其他文件 我的目标文件大约有 1GB 手动清洁安全吗 如果我在项目中单击 清理 它不会删除调试文件夹中的所有内容 这就是为什么我想手动制作 是的 你可以清除里面的所有东西bin and obj文件夹 它
  • 苹果应用程序因 IPV6 崩溃而被拒绝

    我使用 Dotnet 的网络服务创建了一个 ios 应用程序 并于 1 个月前成功启动 我将我的应用程序与网络服务同步连接 现在我已经更改了应用程序 应用程序正在与网络服务异步连接 并将应 用程序放在应用程序商店中 但苹果拒绝了该应用程序
  • 如何在 Tkinter 中添加占位符

    我如何将占位符添加到条目中tkinter 我不相信它有像 HTML 这样的占位符功能 我发现要使文本在单击时消失 您必须添加一个onclick事件 但我如何创建onclick事件以及如何让文本首先出现 这是我正在使用的代码 我想说 在此处输
  • 什么是运算符的结合性以及为什么它很重要?

    对于运算符来说什么是结合性以及为什么它很重要 对于运算符来说 关联性意味着当同一运算符出现在一行中时 我们首先应用哪个运算符出现 下面 让Q成为操作员 a Q b Q c If Q是左结合的 那么它的计算结果为 a Q b Q c 如果它是
  • getElementsByTagName() 方法未按预期工作

    我试图简单地更改所有内容中的文本具有此代码的元素 p p
  • 需要在java中以特定时间间隔运行特定功能

    我有一个具体的要求 我有一个通知功能 可以将电子邮件发送到所有系统客户端 代码是用java写的 我想做的是 我想执行特定的工作 以特定的时间间隔发送电子邮件 例如每两天一次或每周或每月一次 截至目前我不知道如何做到这一点 我们正在使用 Qu
  • 解决 android 中的 java.lang.Throwable 异常

    我正在开发一个带有 sqlite 数据库的 Android 应用程序 在我的应用程序中编写与数据库操作相关的代码后 我遇到了以下异常 虽然我的应用程序没有停止 崩溃 但我想知道如何解决此异常 我不确定为什么会发生这个异常 但我认为它与 sq
  • C中不使用信号量的数据同步

    我需要在我的代码中进行数据同步 目前 我正在访问中断内以及本地函数中的全局值 如果中断调用频繁 则可能会损坏数据 我需要避免这种情况 我的代码中没有使用操作系统 因此无法使用信号量 使用与信号量类似的锁定方法可能会解决我的问题 任何帮助 将
  • 存储 PBKDF2 加密密码时使用什么数据类型?

    我正在使用 SimpleCrypto Net 来加密我的密码 据我所知 它使用 PBKDF2 和指定的盐和迭代次数 我想知道在数据库中设置密码列最适合我的数据类型是什么 从代码来看 结果是一个 64 字节的 Base64 编码密钥 考虑到
  • 在同一个azure web应用程序上创建虚拟目录

    我有一个在 Azure 上运行的应用程序 我需要复制该应用程序 以便不同的用户可以访问例如 site com s1 和 site com s2 并单独使用它们 应用程序是一样的 数据库会变 我尝试为我的应用程序创建一个虚拟目录 但每次都会遇
  • 检查窗口打开

    var windowUrl var windowName mywin var w window open windowUrl windowName windowSize w document write html w document cl
  • 使用不同的.Net 语言?

    是否有不同受欢迎程度的细分 Net 语言可用的 有谁知道任何提供此信息的调查 或者即使有可能确定这一点 Update 答案是not不同 Net 语言的列表 我希望看到显示每种 Net 语言的相对使用 流行程度的统计数据 谢谢 如果你像我一样
  • 访问受 Cloudflare 保护的网页

    首先 我想道歉 以防我的问题可能无法提供足够的连接或任何其他问题 我现在正在手机上输入此内容 因此 我正在开发一个项目 需要我在网页中自动执行任务 为了做到这一点 第一步是首先访问该页面 但我遇到了一个障碍 我尝试过搜索和想通了也无济于事
  • 如何使用 C# 迭代和统计 Word 文档中的修订次数?

    我一直在寻找这个问题 但找不到任何答案 所以希望这里的人可以提供帮助 我正在用 C 编写一个 WinForms 应用程序 其中我使用 Word Application Compare Documents 来比较两个文档并获取一个结果文档 其