Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void Main(string[] args)
- {
- XNamespace ns = XNamespace.Get(@"http://schemas.openxmlformats.org/wordprocessingml/2006/main");
- byte[] byteArray = File.ReadAllBytes(@"C:/Users/Alexander/Downloads/WordTest.docx");
- using (var stream = new MemoryStream())
- {
- XDocument xdoc;
- stream.Write(byteArray, 0, byteArray.Length);
- using (WordprocessingDocument doc = WordprocessingDocument.Open(stream, true))
- {
- #region Openxml.WordProcessing
- var paragraphs = doc.MainDocumentPart.Document.Body.ToList();
- Table tbl = new Table(File.ReadAllText(@"C:/users/alexander/downloads/tablecontent.xml"));
- var bookmark = paragraphs.SelectMany(p => p.Descendants<BookmarkStart>()
- .Where(bm => bm.Id == "0")).FirstOrDefault();
- doc.MainDocumentPart.Document.Body.ReplaceChild(tbl, bookmark.Parent);
- #endregion Openxml.WordProcessing
- #region LINQ TO XML
- XElement xtbl = XElement.Load(new FileStream(@"C:/users/alexander/downloads/tablecontent.xml", FileMode.Open));
- using (StreamReader sr = new StreamReader(doc.MainDocumentPart.GetStream()))
- using (XmlReader xr = XmlReader.Create(sr))
- xdoc = XDocument.Load(xr);
- var test = xdoc.Elements().First().Elements().First().Elements().SelectMany(e => e.Elements()).ToList();
- var startBookmark = test.Where(p => p.Name == XName.Get("bookmarkStart", ns.NamespaceName) && p.Attribute(XName.Get("id", ns.NamespaceName)).Value == "0").First();
- startBookmark.Parent.ReplaceWith(xtbl);
- using (XmlWriter xw = XmlWriter.Create(doc.MainDocumentPart.GetStream()))
- xdoc.Save(xw);
- #endregion LINQ TO XML
- using (FileStream fs = new FileStream(@"C:/users/alexander/downloads/WordTestModified.docx", FileMode.Create))
- {
- stream.WriteTo(fs);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement