打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
XML导出word

新建一个word文档,如图


在相应单元格中插入书签

将word文档另存为xml文档

后台代码:

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1.        ExportWordML expwordml = new ExportWordML();  
  2.        expwordml.CreateXmlDom(Server.MapPath("~/Template/人员档案表.xml"));  
  3.        Dictionary<stringstring> wordTexts = new Dictionary<stringstring>();  
  4.        Dictionary<string, Utility.ExportWordML.WordPic> dic_wordpic = new Dictionary<string, ExportWordML.WordPic>();  
  5. wordTexts.Add("user_name" + i, "张三");  
  6.        wordTexts.Add("sex" + i, "男");  
  7. expwordml.SetNodeText(wordTexts);  
  8.        Utility.ExportWordML.WordPic portrait_pic = new ExportWordML.WordPic();  
  9.        portrait_pic.Width = 85;  
  10.        portrait_pic.Height = 90;  
  11.        portrait_pic.PicPath = Server.MapPath(picturePath);  
  12.        dic_wordpic.Add("Portrait_url", portrait_pic);  
  13. expwordml.SetNodePic(dic_wordpic);  
  14. expwordml.Save(Server.MapPath("~/Template/EntryfileTemp/员工档案.doc");   


插入图片后导出的文档使用word打开时,报了格式错误,于是对类中的插入图片方法做了下修改

  1. /// <summary>  
  2. /// 根据标签插入一张图片  
  3. /// </summary>  
  4. /// <param name="xdoc"></param>  
  5. /// <param name="node"></param>  
  6. /// <param name="picpaths"></param>  
  7. private void SetBookMarkPics(XmlDocument xdoc, XmlNode node, Dictionary<string, WordPic> picpaths)  
  8. {  
  9.     if (node.NextSibling.Name.ToString() == "aml:annotation")//w:bookmarkEnd  
  10.     {  
  11.         //查找bookmarks中是否在word标签  
  12.         if (picpaths.ContainsKey(node.Attributes["w:name"].Value))  
  13.         {  
  14.             // "w:p"节点的父节点  
  15.             XmlNode bookmrkParent = node.ParentNode;  
  16.             XmlNode bookmrkParentParent = node.ParentNode.ParentNode;  
  17.   
  18.             XmlElement tagPic;  
  19.             tagPic = xdoc.CreateElement("w:pict", nsmgr.LookupNamespace("w"));  
  20.             bookmrkParent.InsertAfter(tagPic, node);//原为 bookmrkParentParent.InsertAfter(tagPic, bookmrkParent);  
  21.   
  22.             XmlElement tagbindData;  
  23.             tagbindData = xdoc.CreateElement("w:binData", nsmgr.LookupNamespace("w"));  
  24.             tagPic.AppendChild(tagbindData);  
  25.   
  26.             XmlAttribute nodeAttr;  
  27.             nodeAttr = xdoc.CreateAttribute("w:name", nsmgr.LookupNamespace("w"));  
  28.             nodeAttr.Value = "wordml://" + Path.GetFileName(picpaths[node.Attributes["w:name"].Value].PicPath);  
  29.             tagbindData.Attributes.Append(nodeAttr);  
  30.   
  31.             //xml:space="preserve"  
  32.             nodeAttr = xdoc.CreateAttribute("xml:space");  
  33.             nodeAttr.Value = "preserve";  
  34.             tagbindData.Attributes.Append(nodeAttr);  
  35.   
  36.   
  37.             XmlNode nodePicValue;  
  38.             nodePicValue = xdoc.CreateNode(XmlNodeType.Text, "w:binData", nsmgr.LookupNamespace("w"));  
  39.             nodePicValue.Value = ImgToBase64String(picpaths[node.Attributes["w:name"].Value].PicPath);  
  40.             tagbindData.AppendChild(nodePicValue);  
  41.   
  42.             XmlElement tagShape;  
  43.             tagShape = xdoc.CreateElement("v:shape", nsmgr.LookupNamespace("v"));  
  44.             tagPic.AppendChild(tagShape);  
  45.   
  46.   
  47.             XmlAttribute tagStyle;  
  48.             tagStyle = xdoc.CreateAttribute("style");  
  49.             tagStyle.Value = "width:" + picpaths[node.Attributes["w:name"].Value].Width + "pt;height:" + picpaths[node.Attributes["w:name"].Value].Height + "pt;";  
  50.             tagShape.Attributes.Append(tagStyle);  
  51.   
  52.   
  53.             XmlElement tagimagedata;  
  54.             tagimagedata = xdoc.CreateElement("v:imagedata", nsmgr.LookupNamespace("v"));  
  55.             tagShape.AppendChild(tagimagedata);  
  56.   
  57.             nodeAttr = xdoc.CreateAttribute("src");  
  58.             nodeAttr.Value = "wordml://" + Path.GetFileName(picpaths[node.Attributes["w:name"].Value].PicPath);  
  59.             tagimagedata.Attributes.Append(nodeAttr);  
  60.   
  61.         }  
  62.     }  
  63. }  



另附合并xml文档的方法

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /// <summary>  
  2. /// 合并XML文档,将strCopyFolder中的XML文档合并到path1中  
  3. /// </summary>  
  4. public string MergeXML(string path1, string strCopyFolder, string savepath)  
  5. {  
  6.     XmlDocument doc1 = new XmlDocument();  
  7.     XmlDocument doc2 = new XmlDocument();  
  8.     doc1.Load(path1);  
  9.     nsmgr = new XmlNamespaceManager(doc1.NameTable);  
  10.     nsmgr.AddNamespace("w""http://schemas.microsoft.com/office/word/2003/wordml");  
  11.     XmlNodeList nodeList1 = doc1.SelectNodes("//w:body", nsmgr);  
  12.     XmlNode node1_body;  
  13.   
  14.     string[] arrFiles = Directory.GetFiles(strCopyFolder);  
  15.   
  16.     node1_body = nodeList1.Item(0);  
  17.     foreach (string strFile in arrFiles)  
  18.     {  
  19.         doc2.Load(strFile);  
  20.         foreach (XmlNode n in doc2.SelectSingleNode("//w:body", nsmgr).ChildNodes)  
  21.         {  
  22.             XmlNode node2 = doc1.ImportNode(n, true);  
  23.             node1_body.AppendChild(node2);  
  24.         }  
  25.     }  
  26.     doc1.Save(savepath);  
  27.     return savepath;  
  28. }  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
获取网络日期
C#中将dataset转换成xml格式的string型,以及将xml格式的string型转换成dataset
android string.xml 添加特殊字符
android 横竖屏限制如何配置
在struts2的Action中返回Ajax显示需要的信息
20世纪西方绘画中的女子形象 Female Portrait
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服