excel的数据交换 (XML,html,MHT)
最近几天一直都在忙excel的export和import,说说看
这个项目的开发有几个前提,或者限制
1、我只讨论Microsoft Excel 2000以后的版本,因为之前的很多生成格式都不兼容。
2、不能是用MS Office的COM APIs,因为服务器端不能安装Office。
我们可以发现,如果用文本编辑器打开.xls格式的Excel文件,内容基本上是乱码,很难看懂。但是Excel给使用者提供了几种不同的保存格式:xls,xml,html,mht等等。 我们来讨论一下各种格式的优劣。
xls:不用说了,大家都知道,这是Microsoft的标准excel格式,它是用二进制编写,如果直接用记事本打开,会发现很难理解。但好像微软已经公布了此格式的标准,此链接就是个直接转化的例子
http://unruledboy.cnblogs.com/archive/2004/07/07/22093.aspx
xml:其实xml格式更准确说是一种数据存储形式,它的优势在于能够很容易的保存和读取数据,并且一小部分的结构改变不会影响到其他。但有时侯我们并不要求树状显示的数据形式,那么这个时候就需要用到xslt,也就是template的概念。可惜我不是美工的专家,xslt格式的编写简直比杀头还吓人。否则的话,对于简单的excel文件生成,xml格式真的很简单。但xml只有office 2003以后才支持,而且不支持excel中的图表,图片之类的。很显然嘛,xml并不方便添加二进制数据
html:大家如果稍微有点网页开发方面的知识,就会知道其实一个网页也是被分为各个小格,由行和列组成。这不是和excel文件很像吗?所以大家可以直接生成一个你想见到的html页面,然后加上一写MS Excel要求的attributes,就可以直接用excel打开,而且文件更小。
mht:这个其实就是网页内容集成格式,大家有过下载一个完整网页的经历吧,所有网页的内容都会被装到一个文件夹里,包括图片什么,虽然完整,但不方便,因为有很多小文件。而这个mht格式更进了一步,他将文件夹的各个文件全部用MIME附件的形式include到一个文件中。然后各个文件部分之间用一个separator来分开。但信息储存的主文件还是用html编写的。此格式也只有Office 2003支持
好了,简单的介绍完各个方法,我来主要介绍一下我用的MHT格式,一个理由:功能最强大。
一个完整的MHT格式的excel文件包括以下几部分:
1. 主文件。 其实就是Excel Classer,此文件说明整个Excel文档包括哪些Worksheets, 以及关于文档的信息,例如作者,创建日期。。。
2. 所有worksheets,相对应Excel文档的各页纸,用html语言编写。
3. 所有附件,这些文件都是用base64编码,然后作为一个普通文件包括在MHT上的。
4. filelist,这是一个xml文件,说明这个MHT文档中包含哪些文件,并且储存在哪些相对路径。
5. style.css, 很明显,此文件储存各个html文件的现实style,因为所有页面都使用这个css,所以特别优化文件大小,但不是必需的。
6. tabtrip,这个东西很好玩,也是一个html文件,大家猜猜是啥?就是Excel 文档左下的页面选项卡,哈哈。
有一点要注意,就是所有这些文件都是用quoted-printable编码,除了附件文件。这是MIME格式要求的。
此链接是很有用的一个小例子,但是其实例子中的文件并不完整。
http://www.cnblogs.com/birdshome/archive/2005/07/12/190988.html
说了这么多,其实最最简单的方法就是新建一个简单的Excel文件,然后直接保存为MHT格式,然后用文档打开看看它的内容,一切一目了然!
我的项目告一段落,Excel自动生成比较顺利,顾客们都很满意,也小小的表扬一下自己!
不多说了,继续上班,明天法国全国性罢工,希望运气好,能弄到一辆自行车。。。
No comments:
Post a Comment