[轉] Chrome瀏覽器導出Excel 轉自:


data協議方式:對於支持data協議的瀏覽器,可以將html或是csv先用js base64處理,然后前綴data:application/vnd.ms-excel;base64,,即可使瀏覽器將其中的數據當做excel來處理,瀏覽器將提示下載或打開excel文件,可惜的是ie不支持。extjs的官網有一個grid的plugin,實現導出xhtml格式的偽excel文件,就是這么做的。 (except IE)
 具體js如下(template變量的內容因為新浪博客無法正常顯示,只能用圖片插入):
var tableToExcel = (function() {
 var uri = 'data:application/vnd.ms-excel;base64,', 

 template =​


 base64 = function(s) { return window.btoa((encodeURIComponent(s))) },

 format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }

 return function(table, name) {

   if (!table.nodeType) table = document.getElementByIdx_x_x_x_x_x_x(table)

   var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}

   window.location.href = uri + base64(format(template, ctx))

 }

})()

其中format函數中m、p代表什么,理解如下:
 format = function(s, c){
 return s.replace(/{(\w+)}/g, function(m, p) {  
        console.log(m + ", " + p);//打印參數。  
        return c[p];  
    })  
​}  
執行:  
console.log(format("a{b}c"
, {b : "BBB"}));  

輸出如下: 

{b}, b 

aBBBc <-最終結果。

正則表達式:/{(\w+)}/g,意思要全局匹配帶有花括號並且之間至少一個字母的字符串,m是匹配成功的字符串,正則中的括號是得到匹配成功的字符傳中分組匹配的結果,比如上面的例子,匹配 “a{b}c”,m 的值為{b},那么分組匹配的結果就是 b,改正則的意圖:尋找出字符傳s中花括號所包含的的字符對應的C的屬性的值,替換掉整個花括號的內容。

' {table}',

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM