现在的各类应用系统中时常会需要动态生成Word文件,解决比较常见的两种方法是:
1. 利用Word提供的COM自动化接口控制Word生成文档
2. 利用Word对html的支持,制作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> |