用MIME格式描述多工作表Excel文件

    上次说了使用MIME格式描述多内容的Excel文件,那么如果我希望描述一个有多工作表(sheet)的Excel文件,是否也同样能办到呢?因为很多时候我们需要把一系列的多个表格导入一个Excel文件中保存,对多工作表的支持是非常重要的功能,否则单Sheet的Excel文件如同鸡肋的说。

    其实我们完全可以按照上次的说明,生成一个MIME格式描述的Excel文件先,然后加入对多sheet的描述就可以了。对多sheet支持的MIME描述是文件中一个单独的节,如下是一个描述了4个sheets的节:
------BOUNDARY_9527----
Content-Location: file:///C:/0E8D990C/MimeExcel.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:x=3D"urn:schemas-microsoft-com:office:excel"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<xml>
 
<x:ExcelWorkbook>
  
<x:ExcelWorksheets>
   
<x:ExcelWorksheet>
    
<x:Name>cnblogs</x:Name>
    
<x:WorksheetSource HRef=3D"cid:sheet001"/>
   
</x:ExcelWorksheet>
   
<x:ExcelWorksheet>
    
<x:Name>birdshome</x:Name>
    
<x:WorksheetSource HRef=3D"cid:sheet002"/>
   
</x:ExcelWorksheet>
   
<x:ExcelWorksheet>
    
<x:Name>mime</x:Name>
    
<x:WorksheetSource HRef=3D"MimeExcel/sheet003.xml"/>
   
</x:ExcelWorksheet>
   
<x:ExcelWorksheet>
    
<x:Name>excel</x:Name>
    
<x:WorksheetSource HRef=3D"MimeExcel/sheet004.xml"/>
   
</x:ExcelWorksheet>
  
</x:ExcelWorksheets>
 
</x:ExcelWorkbook>
</xml>
</head>
</html>

    其实最关键的就是<x:WorksheetSource HRef=3D"cid:sheet002"/>节点,它的属性HRef表示一个Sheet的ID,这个ID和上次说的图片引用一样,可以使Content-Location描述,也可是Content-ID来描述,只要引用的时候注意配对就行了。
    
    各个Sheet的描述就和"多内容"一文中说的格式一样。比如sheet001:
------BOUNDARY_9527----
Content-ID: sheet001
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:x=3D"urn:schemas-microsoft-com:office:excel"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<xml>
 
<x:WorksheetOptions>
  
<x:ProtectContents>False</x:ProtectContents>
  
<x:ProtectObjects>False</x:ProtectObjects>
  
<x:ProtectScenarios>False</x:ProtectScenarios>
 
</x:WorksheetOptions>
</xml>
</head>
<body>
<table>
 
<tr>
  
<td>cnblogs</td>
  
<td>cnblogs</td>
  
<td>cnblogs</td>
  
<td>cnblogs</td>
 
</tr>
 </table>
</body>
</html>

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

posted on 2005-07-14 00:09 birdshome 阅读(3713) 评论(5) 编辑 收藏

评论

#1楼  回复 引用 查看   

楼主的思路非常有启发价值。
楼主的思路本质上是生成mht文件,用IE另存一个网页为mht文件,用Excel是可以正常打开的。
我认为完全自己生成一个mht文件比较麻烦,一般用一个mht文件作为模板,替换内容即可,此模板用Excel制作,另存为mht文件即可。对多个Sheet的文件,如果用楼主生成的模板,改名为mht后在IE中不能正常显示,Excel另存为mht文件时会自动生成框架,在IE中可以正常切换Sheet显示。
2005-07-14 09:49 | Pharaoh      

#2楼  回复 引用 查看   

mark...

多谢楼主!
2005-07-14 10:07 | 阿浪      

#3楼  回复 引用 查看   

不错,支持ing
2005-07-14 12:29 | Eunge      

#4楼  回复 引用   

用MIME生成Excel文件是否有大小限制或者sheet数限制?如果有,是否可能突破?

尝试用MIME生成多sheet的Excel文件,当文件大小超过1M,或者sheet数超过10个的时候,Office2003打开该Excel文件会报错,打开失败。
用Office2002可以打开,但是如果文件名超过9位(中文、英文都一样)时,就会报错。

用MIME生成Excel文件是否有限制?
2007-01-27 16:56 | 九门提督[未注册用户]

#5楼[楼主]  回复 引用 查看   

@九门提督
我没有生成过如此大规模的MIME格式Excel文档,你可以这样试验一下。先生成一个简单的Excel文件,让其远远超过10个Sheets,但是每个Sheet很简单,这样文件远小于1M,另存为mht,看看能不能打开?二是生成一个只有1个或2个Sheets的Excel文档,让每个Sheet很复杂,让文件远大于1M,也另存为mht,再看看能不能打开?
2007-01-27 17:08 | birdshome      

导航

公告

  原创技术文章和心得,转载必须注明来源"博客园"!
  贴子以"现状"提供,且没有任何担保,同时也没有授予任何权利。
昵称:birdshome
园龄:7年10个月
荣誉:推荐博客
粉丝:73
关注:3

搜索

 

常用链接

我的标签

随笔分类(337)

文章分类(147)

相册

Ex-Colleagues

常用链接

兄弟情深

积分与排名

  • 积分 - 3145044
  • 排名 - 6

最新评论

阅读排行榜

推荐排行榜