我需要按照它们在文档中出现的顺序从OpenXML文档中检索页眉/页脚部分。
以下内容: -
foreach (HeaderPart header in document.MainDocumentPart.HeaderParts)
{
...
}
- 似乎没有按特定顺序迭代HeaderParts
。
任何人都可以解释如何正确订购这些吗?通过使用OrderBy,还是以不同方式访问HeaderParts
?
编辑:示例
例如: -
在示例文档中,我有几个分节符。每个部分都有不同的页眉/页脚: -
文档中没有“不同的第一页”或“不同的奇数/偶数”页眉或页脚。
当我尝试使用document.MainDocumentPart.FooterParts
迭代这些页脚时,它们不会出现在1,2,3,4的顺序中。我无法确定这些页脚出现的顺序背后的逻辑序列。我怀疑他们没有订购。
我需要它们。
答案 0 :(得分:1)
您实际上并不想首先获取页眉/页脚部分,您希望按照它们出现的顺序将它们放在document.xml中 - 然后访问它们的部分。为此,您需要Linq之类的东西来查询主文档。之后,您可以获取他们的关系ID,并从那里使用包装来获得实际部分。但首先,你需要得到xelement,就像这样:
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#。但这个概念是一样的。