Word模版之替换删除的实现(Word2003以上,XML,Schema)

来源:互联网 发布:jsp引入java包 编辑:程序博客网 时间:2024/05/08 12:21

    最近做了一个关于Word模板的项目。

    主要功能是基于一个Word 2003 XMl 形式的Word文档

          1)删除不需要的章节,内容,图片。

          2)替换章节,内容,图片。

 

一.首先是定制一个Schema文件,用来规范Word模板

 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="urn:schemas-microsoft.memo"
  targetNamespace="urn:schemas-microsoft.memo"
  elementFormDefault="qualified">

 <xsd:element name="ReplaceBlock" type="ReplaceBlockType"/>
 <xsd:element name="ReplaceText" type="ReplaceTextType"/>

 <xsd:complexType name="ReplaceBlockType" mixed="true">
     <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:element name="ReplaceBlock" type="ReplaceBlockType" minOccurs="0"/>
       <xsd:element name="ReplaceText" type="xsd:string" minOccurs="0"/>
     </xsd:sequence>
 </xsd:complexType>
 
 <xsd:complexType name="ReplaceTextType" mixed="true">
     <xsd:all>
     </xsd:all>
 </xsd:complexType>
</xsd:schema>

 

以上就内容就是定制了2各类型

1.ReplaceBlock 用来替换删除章

2.ReplaceText用来替换删文字

详细schema 内容参照 http://www.w3school.com.cn/schema/el_complextype.asp

 

然后打开Word->Tool->Template and Addin->XMLschema->Addschema (日文版的Word,直接翻译的,英文不知道对不对)

 

添加后Ctrl+F1打开侧栏,选到XMLDataStruct,然后就可以在Word中圈圈叉叉啦。(PS每个Tag都可以加自己的placeHolder,方便寻找)

 

最后保存成XML Word形式后,模板就建立好了。

 

二.替换

简单的说就是根据上面做好的 WordXML 去检索对应的XMLNode,然后把内容换掉。

至于怎么样找到需要替换的XMLNode,可以去MSDN上找一下。

 

检索就用 Xpath,如果要看WordXML的构造话,可以用XMLEditor,很好用。

Word里面图片保存的形式是Base64编码,要替换的话,把自己本机的图片转成Base64之后,替换掉即可。

 

就写这么点了,第一篇:)

 

 

 

 

 

 

 


 

 

原创粉丝点击