Saving an OpenXML Document (Word) generated from a template

DilbertDave picture DilbertDave · Aug 5, 2009 · Viewed 23.6k times · Source

I have a bit of code that will open a Word 2007 (docx) document and update the appropriate CustomXmlPart (thus updating the Content Controls in the document itself as they are mapped to the CustomXmlPart) but can't work out how to save this as a new file.! Surely it can't be that hard!

My current thinking is that I need to open the template and copy the content into a new, blank document - file by file, updating the CustomXmlPart when I encounter it. Call me old fashioned but that sounds a little bit clunky to me!

Why can't I just do a WordprocessingDocument.SaveAs(filename); ...?

Please tell me I am missing something simple here.

Thanks in advance

Answer

Ahmad Mageed picture Ahmad Mageed · Aug 19, 2009

Are you referring to the OpenXml SDK? Unfortunately, as of OpenXml SDK 2.0, there's no SaveAs method. You'll need to:

  1. Make a temporary copy of your template file, naming it whatever you want.
  2. Perform your OpenXml changes on the above file.
  3. Save the appropriate sections (ie. using the .myWordDocument.MainDocumentPart.Document.Save() method for the main content or someHeaderPart.Header.Save() method for a particular header).