gpt4 book ai didi

c# - OpenXML 文档中 Header/FooterParts 的顺序

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:43 25 4
gpt4 key购买 nike

我需要按照它们在文档中出现的顺序从 OpenXML 文档中检索页眉/页 footer 分。

以下内容:-

foreach (HeaderPart header in document.MainDocumentPart.HeaderParts)
{
...
}

- 似乎以无特定顺序遍历 HeaderParts

任何人都可以解释如何正确订购这些吗?是使用 OrderBy,还是以不同方式访问 HeaderParts

编辑:例子

例如:-

在示例文档中,我有几个分节符。每个部分都有不同的页眉/页脚:-

  • 第 1 节 => 第 1 节页脚
  • 第 2 节 => 第 2 节页脚
  • 第 3 节 => 第 3 节页脚
  • 第 4 节 => 第 4 节页脚

文档中没有“不同的首页”或“不同的奇数/偶数”页眉或页脚。

当我尝试使用 document.MainDocumentPart.FooterParts 遍历这些页脚时,它们没有按 1、2、3、4 的顺序出现。我无法确定背后的逻辑这些页脚在序列中出现的顺序。我怀疑它们没有被订购。

我需要它们的顺序。

最佳答案

您实际上并不想首先获取页眉/页 footer 分,您希望按照它们出现的顺序将它们放入 document.xml 中 - 然后访问它们的部分。为此,您需要使用 Linq 之类的工具来查询主文档。之后,您可以获得他们的关系 ID,并从那里使用打包来获取实际部分。但首先,您需要进入 x 元素,如下所示:

Imports System.Linq
Imports <xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">

Module Module1
Sub Main()
Dim doc As String = "C:\headers.docx"
Dim wordDoc = WordprocessingDocument.Open(doc, False)
Using wordDoc
Dim mainPart = wordDoc.MainDocumentPart
Dim docStream As System.IO.StreamReader = New IO.StreamReader(mainPart.GetStream)
Dim xDoc As XElement = XElement.Load(docStream)
Dim sectionHeaders = From e In xDoc...<w:sectPr> Select e.<w:headerReference>
End Using
End Sub

End Module

对 VB.NET 感到抱歉 - 我不懂 C#。但概念是一样的。

关于c# - OpenXML 文档中 Header/FooterParts 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com