Word Open Xml—C#后台实现Word文档读写(一)

  写在开头在写这篇文章之前,我对Word Xml的研究并不是很深入,近期才开始做相关方面的开发。在我准备着手对Word Xml进行研究时,发现网上的资料并不是很全面,因此,在我记忆还算深刻之时,打算记录下我对Word Xml文档的理解,以供读者参考。(注:Office与Wps的文档稍有不同,不相匹配之时以Office为准)

首先,我们从一个普通的Word文档开始,通过VSTO打开这个文档,然后获取到里面的内容。

using Microsoft.Office.Interop.Word;
//引用 Microsoft Office 15.0 Object Library
xmlDoc = new XmlDocument();
public void GetWordXml()
{   Application wordApp
= new Word.Application()//先创建word文档的实例   Document doc = null;   doc = app.Documents.Open(filePath);//通过文件地址打开文档   string xmlStr = doc.WordOpenXml;      xmlDoc.LoadXml(xmlStr );//获取到Xml内容   doc.Close();//关闭文档   wordApp.Quit(); }

   

现在已经获取到Word Xml的所有内容了,然后再从中取到需要的部分。

using System.Xml;

XmlNamespaceManager xnm = null;
XmlNode nodeHead = null;
XmlNode nodeFoot = null;
XmlNode nodeBody = null;
public void GetXmlContent() {   XmlNamespaceManager xnm = new XmlNamespaceManager(xmlDoc.NameTable);   xnm.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");   xnm.AddNamespace("pkg", "http://schemas.microsoft.com/office/2006/xmlPackage");   nodeHead = xmlDoc.SelectSingleNode("//pkg:part[@pkg:name='/word/header1.xml']/pkg:xmlData/w:hdr", xnm);//获取页眉   nodeFoot = xmlDoc.SelectSingleNode("//pkg:part[@pkg:name='/word/footer1.xml']/pkg:xmlData/w:ftr", xnm);//获取页脚   nodeBody = xmlDoc.SelectSingleNode("//w:document/w:body", xnm);//获取文档内容 }

 还有一个地方值得注意,页眉和页脚如果设置了"首页不同"和“奇偶页不同”,那么获取页眉和页脚也稍有不同,注意我们上面的是这样写的 :[pkg:part[@pkg:name='/word/header1.xml']

这个名称后面的数字表示的是不同的页眉。当设置了“首页不同”时,首页的页眉页脚就是 [3] ;若设置了“奇偶页不同”,偶数页是 [1] ,奇数页则为 [2];若是没有设置“奇偶页不同”,[1]则为默认的所有页码的页眉。

nodeHead = xmlDoc.SelectSingleNode("//pkg:part[@pkg:name='/word/header1.xml']/pkg:xmlData/w:hdr", xnm);//偶数页眉,没有其他设置的情况下则为默认页眉。

nodeHead = xmlDoc.SelectSingleNode("//pkg:part[@pkg:name='/word/header2.xml']/pkg:xmlData/w:hdr", xnm);//奇数页眉

nodeHead = xmlDoc.SelectSingleNode("//pkg:part[@pkg:name='/word/header3.xml']/pkg:xmlData/w:hdr", xnm);//首页页眉

本篇文章就到这里,接下来应该要讲的是Word Xml文档中的常用标签,不过没必要大费周章地单独写出来,因此推荐浏览后面这篇博客,应该是比较全面的标签了【整理】Word OpenXML常用标签

后面更新其他章节中用到的标签,而上面的这篇博客又未曾列出来的,我会在本篇文章下更新列举。

猜你喜欢

转载自www.cnblogs.com/caen-blogs/p/9117059.html
今日推荐