web生成excel

2014-08-08 22:40:00
CJL
原创
11717
摘要:web导出excel文件的几种方法

web导出excel文件的几种方法(本节部分内容引自http://www.douban.com/note/204285291/  

1.服务器生成。

poi/jxl, jacob/jawin生成的是excelbiff格式。html/csv的是文本格式,不另存为excel文件,很多excel功能是用不了的。jacob/jawin需要服务器端是windows系统,且安装了excel2000以上版本。poi/jxlhtml/csv方式的话,服务器端可以跨平台。

2.浏览器生成。

1activex方式:使用js/vbs调用excel对象,http://setting.javaeye.com/blog/219302,有个extjsgridpanel导出为excel的例子。(ie+excel)。

2ie命令方式:将html或是csv输出到openwindow,然后使用execCommandsaveas命令,存为csvxls (ie6 only)。

3)服务器端中转方式:将htmltable或是拼接的csv传到服务器端,服务器端再按照Content-Type:application/vnd.ms-excel返回,浏览器就会按excel方式处理。与服务器端拼接相比,少了一次取数操作。(all)。

4data协议方式:对于支持data协议的浏览器,可以将html或是csv先用js base64处理,然后前缀data:application/vnd.ms-excel;base64,,即可使浏览器将其中的数据当做excel来处理,浏览器将提示下载或打开excel文件,可惜的是ie6不支持。extjs的官网有一个gridplugin,实现导出xhtml格式的伪excel文件,就是这么做的。(IE 6不支持)

 

下面介绍第四种浏览器生成方式。

原理:1)浏览器的data协议:打开 data:text/html;ascii,<html><title>hello</title><body>world</body></html> 会生成一个网页。详细介绍见:http://www.keakon.net/2010/02/02/%E5%8E%9F%E6%9D%A5%E6%B5%8F%E8%A7%88%E5%99%A8%E8%BF%98%E6%94%AF%E6%8C%81dataURI%E5%8D%8F%E8%AE%AE

2JS可以根据json数据操作table对象生成包含table的网页。详细见:http://www.blogjava.net/caizh2009/articles/279953.html  。

3)网页可以保存为excel。只包含table的网页可以很方便的转换为伪excel

导出样例: exportToExcel.zip

在线样例:下面只是一个data协议的url在浏览器地址栏里打开它会生成一个只包含table的网页并修改文件类型头保存为伪excel

data:application/vnd.ms-

excel;base64,PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB

4bWxuczp4PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCIgeG1sbnM9Imh0dHA6Ly93d3c

udzMub3JnL1RSL1JFQy1odG1sNDAiPjxoZWFkPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPjx4OkV4Y2VsV29ya2J

vb2s+PHg6RXhjZWxXb3Jrc2hlZXRzPjx4OkV4Y2VsV29ya3NoZWV0Pjx4Ok5hbWU

+V29ya3NoZWV0PC94Ok5hbWU

+PHg6V29ya3NoZWV0T3B0aW9ucz48eDpEaXNwbGF5R3JpZGxpbmVzLz48L3g6V29ya3NoZWV0T3B0aW9ucz48L3g

6RXhjZWxXb3Jrc2hlZXQ

+PC94OkV4Y2VsV29ya3NoZWV0cz48L3g6RXhjZWxXb3JrYm9vaz48L3htbD48IVtlbmRpZl0tLT48bWV0YSBodHR

wLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI

+PC9oZWFkPjxib2R5Pjx0YWJsZSBzdHlsZT0id2lkdGg6ODAwcHgiPjx0ciBpZD0iMCI

+PHRkIGlkPSIwLzAiIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij7lp5PlkI08L3RkPjx0ZCBpZD0iMC8xIiBzdHlsZT0

id2lkdGg6IDIwMHB4OyI

+5oCn5YirPC90ZD48dGQgaWQ9IjAvMiIgc3R5bGU9IndpZHRoOiAzMDBweDsiPuWHuueUn+aXpeacnzwvdGQ

+PHRkIGlkPSIwLzMiIHN0eWxlPSJ3aWR0aDogNDAwcHg7Ij7nsY3otK88L3RkPjwvdHI

+PHRyIGlkPSIxIj48dGQgaWQ9IjEvMCI+5p2O5ZubPC90ZD48dGQgaWQ9IjEvMSI

+5aWzPC90ZD48dGQgaWQ9IjEvMiI

+MjAxMS0yLTE8L3RkPjx0ZCBpZD0iMS8zIj7lsbHkuJzpnZLlsps8L3RkPjwvdHI

+PHRyIGlkPSIyIj48dGQgaWQ9IjIvMCI+546L5LqUPC90ZD48dGQgaWQ9IjIvMSI

+55S3PC90ZD48dGQgaWQ9IjIvMiI

+MjAxMi0xLTE8L3RkPjx0ZCBpZD0iMi8zIj7lsbHkuJzmtY7lroE8L3RkPjwvdHI

+PHRyIGlkPSIzIj48dGQgaWQ9IjMvMCI+6LW15YWtPC90ZD48dGQgaWQ9IjMvMSI

+5aWzPC90ZD48dGQgaWQ9IjMvMiI

+MjAxMi0yLTI8L3RkPjx0ZCBpZD0iMy8zIj7lsbHkuJznnIHmtY7ljZfluII8L3RkPjwvdHI

+PC90YWJsZT48L2JvZHk+PC9odG1sPg== 

 

发表评论
评论通过审核后显示。
流量统计