Ashley Webb Ashley Webb - 2 months ago 8
Vb.net Question

declaring New instance of WordprocessingDocument using OpenXML

I am attempting to use open XML for the first time. I am following a tutorial found here http://www.codeproject.com/Articles/36694/Creation-of-a-Word-2007-document-using-the-Open-XM. When I declare a variable as new

WordprocessingDocument
I receive the error:


"Type WordprocessingDocument.Create is undefined".


Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Wordprocessing
Imports DocumentFormat.OpenXml.Packaging

Partial Class test

Public Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
makedoc("file.docx")
End Sub

Private Sub makedoc(ByVal documentfilename As String)
Using mydoc As New WordprocessingDocument.Create(documentfilename, WordprocessingDocumentType.Document)
Dim mainPart As MainDocumentPart = mydoc.AddMainDocumentPart()
'Create Document tree for simple document.
mainPart.Document = New Document()
'Create Body (this element contains
'other elements that we want to include
Dim body As New Body()
'Create paragraph
Dim paragraph As New Paragraph()
Dim run_paragraph As New Run()
' we want to put that text into the output document
Dim text_paragraph As New Text("Hello World!")
'Append elements appropriately.
run_paragraph.Append(text_paragraph)
paragraph.Append(run_paragraph)
body.Append(paragraph)
mainPart.Document.Append(body)
' Save changes to the main document part.
mainPart.Document.Save()
End Using

Answer

You can't create a new instance of WordDocumentProcessing like this. The constructor is protected.

You need to call the Create or Open method :

Using mydoc as WordProcessingDocument = WordProcessingDocument.Create(DocumentFileName, WordprocessingDocumentType.Document)
   ...
End Using