Advertisement
Guest User

Untitled

a guest
Dec 28th, 2015
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. static void Main(string[] args)
  2. {
  3. XNamespace ns = XNamespace.Get(@"http://schemas.openxmlformats.org/wordprocessingml/2006/main");
  4. byte[] byteArray = File.ReadAllBytes(@"C:/Users/Alexander/Downloads/WordTest.docx");
  5. using (var stream = new MemoryStream())
  6. {
  7. XDocument xdoc;
  8. stream.Write(byteArray, 0, byteArray.Length);
  9.  
  10. using (WordprocessingDocument doc = WordprocessingDocument.Open(stream, true))
  11. {
  12.  
  13. #region Openxml.WordProcessing
  14.  
  15. var paragraphs = doc.MainDocumentPart.Document.Body.ToList();
  16. Table tbl = new Table(File.ReadAllText(@"C:/users/alexander/downloads/tablecontent.xml"));
  17. var bookmark = paragraphs.SelectMany(p => p.Descendants<BookmarkStart>()
  18. .Where(bm => bm.Id == "0")).FirstOrDefault();
  19. doc.MainDocumentPart.Document.Body.ReplaceChild(tbl, bookmark.Parent);
  20.  
  21. #endregion Openxml.WordProcessing
  22.  
  23. #region LINQ TO XML
  24.  
  25. XElement xtbl = XElement.Load(new FileStream(@"C:/users/alexander/downloads/tablecontent.xml", FileMode.Open));
  26.  
  27. using (StreamReader sr = new StreamReader(doc.MainDocumentPart.GetStream()))
  28. using (XmlReader xr = XmlReader.Create(sr))
  29. xdoc = XDocument.Load(xr);
  30.  
  31. var test = xdoc.Elements().First().Elements().First().Elements().SelectMany(e => e.Elements()).ToList();
  32.  
  33. var startBookmark = test.Where(p => p.Name == XName.Get("bookmarkStart", ns.NamespaceName) && p.Attribute(XName.Get("id", ns.NamespaceName)).Value == "0").First();
  34.  
  35. startBookmark.Parent.ReplaceWith(xtbl);
  36.  
  37. using (XmlWriter xw = XmlWriter.Create(doc.MainDocumentPart.GetStream()))
  38. xdoc.Save(xw);
  39.  
  40. #endregion LINQ TO XML
  41.  
  42. using (FileStream fs = new FileStream(@"C:/users/alexander/downloads/WordTestModified.docx", FileMode.Create))
  43. {
  44. stream.WriteTo(fs);
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement