0

私は10ページの文書を持っています。各ページにはヘッダーとフッターがあります。ヘッダーには 2 行または 1 行のテキストがあり、それぞれのスタイルが異なります。やりたいことは、ドキュメントをループすることです。DataTable各ページのヘッダーとフッターを読み、後で目次を作成できるようにそれをに入れます。任意のアイデア、私は試しましたが、正しく機能していません。各ページのフッターを読み取らず、ページをスキップしています(順序が間違っているようで、最初のページを最後までスキップするように見えるため、ページ順序で値を取得したいと思います繰り返し)。

助けていただければ幸いです。JT

 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の作成の問題に来ます。

あなたができることは、手動で作成された TOC.docx などの TOC を含む別の Word ドキュメントを作成することです。TOC を追加する場合は、TOC.docx のコピーを作成し、このファイルを TOC するドキュメントとマージします。マージされたドキュメントの設定で、自動更新を true に設定することを忘れないでください。

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