web生成excel
- 2014-08-08 22:40:00
- CJL 原創
- 11858
web導齣excel文件的幾種方法(本節部分內容引自http://www.douban.com/note/204285291/ )
1.服務器生成。
poi/jxl, jacob/jawin生成的是excel的biff格式。html/csv的是文本格式,不另存爲excel文件,很多excel功能是用不瞭的。jacob/jawin需要服務器端是windows繫統,且安裝瞭excel2000以上版本。poi/jxl和html/csv方式的話,服務器端可以跨平颱。
2.瀏覽器生成。
(1)activex方式:使用js/vbs調用excel對象,http://setting.javaeye.com/blog/219302,有箇extjs的gridpanel導齣爲excel的例子。(ie+excel)。
(2)ie命令方式:將html或是csv輸齣到open的window,然後使用execCommand的saveas命令,存爲csv或xls。 (ie6 only)。
(3)服務器端中轉方式:將html的table或是拚接的csv傳到服務器端,服務器端再按照Content-Type:application/vnd.ms-excel返迴,瀏覽器就會按excel方式處理。與服務器端拚接相比,少瞭一次取數操作。(all)。
(4)data協議方式:對於支持data協議的瀏覽器,可以將html或是csv先用js base64處理,然後前綴data:application/vnd.ms-excel;base64,,卽可使瀏覽器將其中的數據當做excel來處理,瀏覽器將提示下載或打開excel文件,可惜的是ie6不支持。extjs的官網有一箇grid的plugin,實現導齣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。
(2)JS可以根據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==