虽然使用Excel.Application对象来操作Excel文件是非常professional的,不过Excel对象创建起来实在太臃肿了,特别是对于B/S结构的应用来说,还需要服务器部署适当版本的Excel应用。而到头来,其是我们对Excel的文件的要求很多时候其实并不高,绝大多数就是导入表格数据而已。
当然如果只是表格数据,我们甚至可以偷梁换柱,导出一个rename成*.xls的Html文件就行了。毕竟Excel支持非常丰富的文件格式,并能自动解析识别 。但是不得不说这样的"Excel文件"太简陋了,对于带有图片格式统计图表的导出,就非常的郁闷了,需要像制作网页那样弄出一堆相关的文件来。不过幸好Excel还支持MIME格式(请参看No. 2045、 2046等RFC)的文档,这样一来我们就可以使用MIME格式,并使用文本方式来生成包含多种内容的Excel文件了。
现在,我们来生成一个包含一行数据和两张图片的MIME格式Excel文件。
首先是MIME文件头:
当然如果只是表格数据,我们甚至可以偷梁换柱,导出一个rename成*.xls的Html文件就行了。毕竟Excel支持非常丰富的文件格式,并能自动解析识别 。但是不得不说这样的"Excel文件"太简陋了,对于带有图片格式统计图表的导出,就非常的郁闷了,需要像制作网页那样弄出一堆相关的文件来。不过幸好Excel还支持MIME格式(请参看No. 2045、 2046等RFC)的文档,这样一来我们就可以使用MIME格式,并使用文本方式来生成包含多种内容的Excel文件了。
现在,我们来生成一个包含一行数据和两张图片的MIME格式Excel文件。
首先是MIME文件头:
MIME-Version: 1.0
X-Document-Type: Worksheet
Content-Type: multipart/related; boundary="----=BOUNDARY_9527------"
------=BOUNDARY_9527------
Content-Location: file:///C:/A257C953/cnblogs.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
X-Document-Type: Worksheet
Content-Type: multipart/related; boundary="----=BOUNDARY_9527------"
------=BOUNDARY_9527------
Content-Location: file:///C:/A257C953/cnblogs.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
这个部分除了红色的内容,基本都是不需要改变的,具体意义可以参看RFC2045。关于Content-Location这个属性描述,是用来指示这个文档的路径的,也就解码MIME文档时,我们可以参考这个属性来生成文件名及保存路径。
第二个部分是HTML导入的xml namespace:
<
html
xmlns:o
=3D"urn:schemas-microsoft-com:office:office"
xmlns:x =3D"urn:schemas-microsoft-com:office:excel" >
xmlns:x =3D"urn:schemas-microsoft-com:office:excel" >
注意这里的"=3D",它是MIME文件编码中的转换格式,其实3D就是"="。如果不导入这两个名称空间,在Excel 2003下,打开文件不现实默认的表格边框,整个文件除了内容外,其余区域就是一个空白。
第三个部分是存放在<head>中的xml格式文档描述信息:
<
head
>
< xml >
< o:DocumentProperties >
< o:Author > zhilee </ o:Author >
< o:LastAuthor > zhilee </ o:LastAuthor >
< o:Created > 2005-07-12T17:02:17Z </ o:Created >
< o:LastSaved > 2005-07-10T17:06:05Z </ o:LastSaved >
< o:Company > u-soft </ o:Company
< xml >
< o:DocumentProperties >
< o:Author > zhilee </ o:Author >
< o:LastAuthor > zhilee </ o:LastAuthor >
< o:Created > 2005-07-12T17:02:17Z </ o:Created >
< o:LastSaved > 2005-07-10T17:06:05Z </ o:LastSaved >
< o:Company > u-soft </ o:Company