Aggiunta di un testo ad un documento Word

‘ Grazie alla libreria OpenXml SDK di Microsoft, inclusa dalla release 2015.05b della piattaforma

‘ web QWay/QualiWare, è possibile con poche righe di codice aggiungere contenuti ad un documento Word esistente.

‘ Il seguente frammento di codice inserisce in un documento Word un testo all'interno di una parte identificata da un segnalibro
Dim path_doc As String

‘ Recupera il percorso del documento corrente
path_doc = "<percorso del documento>"

Dim myDoc As DocumentFormat.OpenXml.Packaging.WordprocessingDocument = DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(path_doc, True)
Dim mainPart As DocumentFormat.OpenXml.Packaging.MainDocumentPart = myDoc.MainDocumentPart

Dim bkmStart As DocumentFormat.OpenXml.Wordprocessing.BookmarkStart= myDoc.MainDocumentPart.Document.Body.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.BookmarkStart)().FirstOrDefault(Function(x) x.Name = "<nome del segnalibro>")
Dim bkmEnd As DocumentFormat.OpenXml.Wordprocessing.BookmarkEnd= myDoc.MainDocumentPart.Document.Body.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.BookmarkEnd)().FirstOrDefault(Function(x) x.id.Value= bkmStart.id)

Dim P As DocumentFormat.OpenXml.Wordprocessing.Paragraph=New DocumentFormat.OpenXml.Wordprocessing.Paragraph

Dim R As DocumentFormat.OpenXml.Wordprocessing.Run = p.AppendChild(New DocumentFormat.OpenXml.Wordprocessing.Run())
Dim RP As DocumentFormat.OpenXml.Wordprocessing.RunProperties = R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.RunProperties())
Dim b As DocumentFormat.OpenXml.Wordprocessing.Bold = New DocumentFormat.OpenXml.Wordprocessing.Bold()
b.Val = true
RP.AppendChild(b)

dim fs As DocumentFormat.OpenXml.Wordprocessing.Fontsize = New DocumentFormat.OpenXml.Wordprocessing.FontSize()
fs.Val = "36"
rp.Append(fs)

R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("Prima riga"))
R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Break())
R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("Seconda riga"))
R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Break())
R.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("Terza riga"))

bkmEnd.InsertBeforeSelf(P)
       
mainPart.Document.Save()
myDoc.Close()