基于模板和XML在BS结构应用中生成word文件

在BS系统中动态生成Word文件通常有两种方法,包括利用COM接口控制Word和生成HTML文件。然而,这两种方法各有局限。更好的解决方案是基于WordML的XML架构,它可以方便地内嵌图片并支持复杂的格式。通过创建模板文件,结合模板和后台数据,例如使用JSP和Velocity等技术,可以高效地在服务器端生成Word文档,同时支持在浏览器中以附件形式下载。
摘要由CSDN通过智能技术生成
 

现在的各类应用系统中时常会需要动态生成Word文件,解决比较常见的两种方法是:

1.       利用Word提供的COM自动化接口控制Word生成文档

2.       利用Wordhtml的支持,制作html文件,并设置其contentType"application/msword",使浏览器调用word打开

第一种方法靠Word进程实际完成文件生成工作,而Word并为设计为在服务器端处理并发调用,所以这种方法只适合单机应用。另外,如果要生成比较复杂的word文件,相应的代码会非常烦琐,排版和调试也需要花大量时间。
第二种方法的致命问题是html文档中无法保存二进制数据,比如图片,如果在服务器端生成一堆文件,即难以在浏览器中显示,也无法让用户直接下载。

比较完善的解决办法是基于WordML来生成word文件。WordML是微软为Word设计的xml架构,其完整语法可以在MSDN找到。按照这个语法生成xml文件,可以在文档中随意得到各种word支持的格式。特别需要指出的是可以方便的在文件中内嵌图片,其语法基本是这样:

<w:pict>
    <v:shapetype id="_x0000_t75" ...>
    ... VML shape template definition ...
    </v:shapetype>
    <w:binData w:name="wordml://02000001.jpg">/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc
...
更多Base6编码的图片文件数据
    </w:binData>
    <v:shape id="_x0000_i1025" type="#_x0000_t75"
      style="width: 212.4pt;height: 159pt">
         <v:imagedata src="wordml://02000001.jpg"
           o:title="Image title"/>
    </v:shape>
</w:pict>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值