Создание документа OpenXML Word с верхним, нижним и нижним колонтитулами - PullRequest
0 голосов
/ 17 ноября 2018

После долгой охоты я сдался и попросил помощи. Я пытаюсь создать текстовый документ, используя OpenXML, который имеет изображение в верхнем и нижнем колонтитулах, и содержит таблицу. Я могу отформатировать документ, создать таблицы, применить текст и т. Д., Но не могу ничего добавить в заголовок. Справка, которую я нашел до сих пор, либо показывает, как применить заголовок из другого документа, либо не работает с тем, как я построил свой документ. Я был бы очень благодарен за помощь. Я, наверное, только что пропустил что-то простое, но я в тупике.

Все, что мне нужно, это пример создания документа с изображениями в верхнем и нижнем колонтитулах и таблицей в основном теле.

спасибо

Public Sub CreateWordprocessingDocument (ByVal filepath As String)

    Dim wordDocument As WordprocessingDocument = WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document)
    Using wordDocument
        ' Add a main document part. 
        Dim mainPart As MainDocumentPart = wordDocument.AddMainDocumentPart()



        Dim headerPart As HeaderPart = mainPart.AddNewPart(Of HeaderPart)()




        ' Create the document structure and add some text.
        mainPart.Document = New Document()

        Dim headerFooter As Header = mainPart.Document.AppendChild(New Header)
        Dim headerRun As New Run
        Dim headerText As New Text
        Dim headerParagraph As New Paragraph
        Dim header As New Header
        headerText.Text = "burp"
        headerRun.Append(headerText)
        headerParagraph.Append(headerRun)
        header.Append(headerParagraph)
        headerFooter.Append(header)



        'code to support orientation And margins
        Dim sectProp As SectionProperties = New SectionProperties()
        Dim PageSize As PageSize = New PageSize() With {.Width = 16838, .Height = 11906, .Orient = PageOrientationValues.Landscape}
        Dim PageMargin As PageMargin = New PageMargin() With {.Top = 720, .Right = 720, .Bottom = 720, .Left = 720}

        sectProp.Append(PageSize)
        sectProp.Append(PageMargin)


        Dim body As Body = mainPart.Document.AppendChild(New Body())

        ' Create an empty table.
        body.Append(sectProp)
        Dim table As New Table()

        ' Create a TableProperties object and specify its border information.
        'This sets up the table properties. Any cells added subsequently will follow these properties
        Dim tblProp As New TableProperties(New TableBorders(
        New TopBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5}, '.size is the weight of the line. 10 = 1 point thick line
        New BottomBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5},
        New LeftBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5},
        New RightBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5},
        New InsideHorizontalBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5}, 'internal borders within a table
        New InsideVerticalBorder() With {.Val = New EnumValue(Of BorderValues)(BorderValues.BasicThinLines), .Size = 5}))
        ' Append the TableProperties object to the empty table.
        table.AppendChild(Of TableProperties)(tblProp)


        'Build the table dynamically from top left to bottom right adding in properties as we go

        '#################
        '#CREATING TABLE #
        '#################

        'Specify the width property of all the cells at the top of the sheet.
        'first row


        Dim row1 As New TableRow()
        row1.Append(createcell("Grey Row", 1500, "CCCCCC"))
        row1.Append(createcellMerge("", 1500))

        table.Append(row1)


        '#####adding an image to a cell - this works. Need to work on the positioning once I have the size of the cell
        Dim imagePart As ImagePart = mainPart.AddImagePart(ImagePartType.Jpeg)

        Using stream As New FileStream(pictureName, FileMode.Open)
            imagePart.FeedData(stream)
        End Using

        'AddImageToCell(tc1, mainPart.GetIdOfPart(imagePart))
        body.Append(table)

    End Using

    Process.Start(filepath)



End Sub
...