0

我有一个 10 页的文件。每个页面都有页眉和页脚。标题可能有两行或一行文本,每一行都有不同的样式。想要做的是循环浏览文档。阅读每页的页眉和页脚,将其放入 a 中DataTable,以便稍后构建 TOC。任何想法,我试过但它不能正常工作,它没有读取每个页面页脚并跳过页面(它似乎乱序,我想获取页面顺序中的值,因为它似乎跳过第一页直到最后一页迭代)。

帮助将不胜感激。捷通

 Using wordDoc As WordprocessingDocument = WordprocessingDocument.Open(combineDocName, True)
        For Each Head As HeaderPart In wordDoc.MainDocumentPart.HeaderParts
            For Each currentParagraph As DocumentFormat.OpenXml.Wordprocessing.Paragraph In Head.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Paragraph)()
          Dim p As ParagraphProperties = currentParagraph.Elements(Of ParagraphProperties)().First()
                If p.Count > 0 Then
                    If (p.ParagraphStyleId IsNot Nothing) Then
                        If p.ParagraphStyleId.Val.ToString() = "HeaderBar" Then
                            For Each currentText As Text In Head.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()
                                If (String.IsNullOrEmpty(keepHeaderM)) Then
                                    HeaderBarTxt = currentText.Text.Trim()
                                ElseIf keepHeaderM <> currentText.Text.Trim() Then
                                    HeaderBarTxt = currentText.Text.Trim()
                                End If
                            Next
                        ElseIf p.ParagraphStyleId.Val.ToString() = "NavigationBar" Then
                            For Each currentText As Text In Head.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()
                                iCount = currentText.Text.Split(":").Length - 1
                                If (String.IsNullOrEmpty(keepHeaderM)) Then
                                    HeaderTxt = currentText.Text.Trim()
                                ElseIf keepHeaderM <> currentText.Text.Trim() Then
                                    HeaderTxt = currentText.Text.Trim()
                                End If
                            Next
                        End If
                    End If
                End If
             Next
          Next
           For Each foot As FooterPart In wordDoc.MainDocumentPart.FooterParts
                For Each currentParagraph2 As DocumentFormat.OpenXml.Wordprocessing.Paragraph In foot.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Paragraph)()
                    If currentParagraph2.Count > 0 Then
                        For Each currentText2 As Text In foot.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()
                            Dim strTemp As String = currentText2.Text
                            If strTemp.IndexOf("-") <> -1 Then
                                FooterTxt = currentText2.Text.Trim()

                            End If
                        Next
                    End If

                Next
            Next
 end using  
4

1 回答 1

0

如果您在 Word 文件中有不同的页眉和页脚,那么我假设您的 Word 文档中有多个部分。

您必须遍历这些部分,然后读取这些部分中的页脚和页眉,然后将它们保存在 DataTable 中的某个位置。

来到创建 TOC 的问题。

您可以做的是创建一个单独的 Word 文档,其中包含手动创建的 TOC,例如 TOC.docx。现在,当您想要添加 TOC 时,您创建 TOC.docx 的副本,然后将此文件与您想要添加 TOC 的文档合并。不要忘记在合并文档的设置中将自动更新设置为 true。

<w:updateFields w:val="true" />
于 2013-10-16T09:38:36.483 回答