当然如果只是表格数据,我们甚至可以偷梁换柱,导出一个rename成*.xls的Html文件就行了。毕竟Excel支持非常丰富的文件格式,并能自动解析识别

现在,我们来生成一个包含一行数据和两张图片的MIME格式Excel文件。
首先是MIME文件头:








这个部分除了红色的内容,基本都是不需要改变的,具体意义可以参看RFC2045。关于Content-Location这个属性描述,是用来指示这个文档的路径的,也就解码MIME文档时,我们可以参考这个属性来生成文件名及保存路径。
第二个部分是HTML导入的xml namespace:


注意这里的"=3D",它是MIME文件编码中的转换格式,其实3D就是"="。如果不导入这两个名称空间,在Excel 2003下,打开文件不现实默认的表格边框,整个文件除了内容外,其余区域就是一个空白。
第三个部分是存放在<head>中的xml格式文档描述信息:




























第一节的xml片断是一个可选项,其实就是Excel文件的文件属性;第二个xml其实也是可选的,只是这里面的<x:Name>cnblogs</x:Name>属性是用来记录Sheet的名称的,如果没有这个xml片段的描述,打开这个文件后,Excel会自动把文件名默认作为这个Sheet的名称。
第四部分就是文件的内容了,也就是一个HTML文本:










这样就是Excel中的一行,有4个Cell。其实只要我们编辑这个第四部分,就可以创建我们需要的Excel数据表格了,包括对表格边框以及内容的style修饰等。那么如果我们要在这个文档中放入图片等内容怎么办呢?
由于MIME支持对多文档的编码和描述,所以我们同样可以轻松的使用MIME格式来支持多数据内容。假如我们要在上面的那行数据下面放两张图片,怎么弄呢?刚才说了这个部分就是HTML文档嘛,放入图片还不很容易。这样就行了:


















这样倒是就行了,不过、不过。。。这个图片怎么是URL啊?当然了,MIME的描述能力还是非常强大的,我们可以把这个图片都弄到一个文件中来嘛。使用MIME的分节描述:boundary="----=BOUNDARY_9527------",我们这样来描述图片。







还可以这样描述(只是其Identity不同):







注意,boundary是:"----=BOUNDARY_9527------",而文档中使用的是:"------=BOUNDARY_9527------",多出来的两个"--"是MIEM要求的。
于是这是的文档内容就可以写为:


















本文MIME Execl文件示例下载:mime_excel.rar。显示效果如下图: