【问题标题】:openxml : track changes not found in word documentopenxml:跟踪在 word 文档中找不到的更改
【发布时间】:2019-09-18 13:55:11
【问题描述】:

我使用 OpenXML 解析 MS Word 文档以查找具有 Author 值的跟踪更改,以便将它们清空。它适用于一个特定的 Word 文档,我不知道为什么。 9 个曲目更改中仅找到 6 个。

这就是我寻找音轨变化的方式:

 var file = Path.GetFileName(filePath);

  using (WordprocessingDocument document = WordprocessingDocument.Open(filePath, true))
  {
    var types = typeof(OpenXmlCompositeElement).Assembly.GetTypes()
                .Where(p => !p.IsInterface && p.GetProperty("Author") != null && p.GetProperty("Author").PropertyType.Equals(typeof(StringValue)))
                .ToList();

       var body = document.MainDocumentPart.Document.Body;
       var changes = body.Descendants().Where(x =>types.Contains(x.GetType()));
  }

有没有更好的方法来实现这一点?

我也尝试过传递types found on this page 的列表,但结果是一样的。仍然是这 3 个被忽略的音轨变化。

编辑

使用 Open XML SDK Productivity 工具,这里是应该作为跟踪更改找到但上面的代码缺少的节点之一:

  <w:ins w:id="283" w:author="Mr Smith" w:date="2019-09-11T12:34:00Z">
   <w:r w:rsidR="008458AA">
    <w:rPr>
     <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
    </w:rPr>
    <w:t>
     2
    </w:t>
   </w:r>
  </w:ins>

【问题讨论】:

  • 能否请您发布一两个有效修订版和一两个无效修订版的 Word Open XML,以便大家进行比较?为此,您可以使用 Open XML SDK 生产力工具。和/或你能想到这些修订的位置/格式有什么不同吗?
  • 我在帖子中添加了一个链接。这是一份机密文件,所以我不得不删除所有内容。但现在更容易看到问题。如果您在 Word 中打开文档,您会看到作者更改的曲目。但是当我运行我的代码时,我根本看不到轨道变化。
  • 我使用了生产力工具并比较了两个不同的 doc 文件(不同的语言),但修订版相同,它们只有两个地方不同。缺少曲目更改的有以下删除:/word/footer2.xml、/word/footer3.xml、/word/header2.xml 和 /word/header3.xml
  • 查看我的编辑与错过曲目更改的 xml 代码
  • 很好,你找到了它,也许现在你明白为什么我要求提供提供上下文的 XML(编辑 not 包含 BTW)以及修订的位置位于。请注意,对于未来的问题,提供文档链接是没有用的。我提醒您网站指南:所有相关信息都需要在问题中

标签: c# .net ms-word openxml


【解决方案1】:

我发现了问题。

var body = document.MainDocumentPart.Document.Body; 行不包括页脚和页眉!

所以我还必须在页脚和页眉中搜索轨道变化。

例如页脚:

 var footer = document.MainDocumentPart.FooterParts.ToList();
 var footerChanges = new List<OpenXmlElement>();
                footer.ForEach(f => 
 footerChanges.AddRange(f.Footer.Descendants().Where(x => 
 types.Contains(x.GetType()))));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多