internal static void ClearHeaderFooter(MainDocumentPart mdp)
        {
            mdp.DeleteParts(mdp.HeaderParts);
            mdp.DeleteParts(mdp.FooterParts);

            var hp = mdp.AddNewPart<HeaderPart>();
            var fp = mdp.AddNewPart<FooterPart>();

            hp.Header = new Header();
            fp.Footer = new Footer();

            foreach (var sps in mdp.Document.Body.Elements<SectionProperties>())
            {
                sps.RemoveAllChildren<HeaderReference>();
                sps.RemoveAllChildren<FooterReference>();
                sps.PrependChild(new HeaderReference { Id = mdp.GetIdOfPart(hp) });
                sps.PrependChild(new FooterReference { Id = mdp.GetIdOfPart(fp) });
            }

            mdp.Document.Save();
        }
        private void replaceCustomXML(MainDocumentPart mainPart, string customXML)
        {
            //using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(fileName, true)) {
            //    MainDocumentPart mainPart = wordDoc.MainDocumentPart;

            mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);

            //Add a new customXML part and then add content
            CustomXmlPart customXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);

            //copy the XML into the new part...
            using (StreamWriter ts = new StreamWriter(customXmlPart.GetStream())) {
                ts.Write(customXML);
            }
        }
        private void replaceCustomXML(MainDocumentPart mainPart, string customXML)
        {
            mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);

            //Add a new customXML part and then add content
            CustomXmlPart customXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);

            //copy the XML into the new part...
            using (StreamWriter ts = new StreamWriter(customXmlPart.GetStream())) {
                ts.Write(customXML);
            }
        }