貼代碼,一切盡在注釋中
<html><head> <meta charset="utf-8"> </head> <body> <input type="button" value="下載設備模板" onclick="foo;" /> <script type="text/javascript" language="javascript"> var downloadTemplate = function {/** * 根據所給數據創建并返回單行 tr節點 * data (必選), tag (可選, 標識創建的節點類型) **/var getTr=function(data,tag){var tr=document.createElement("tr"); for(var i=0;i<data.length;i++){ var item=document.createElement(tag||"td"); item.innerHTML=data[i]; tr.appendChild(item);} return tr;}; /** * 根據所給數據創建并返回 table節點 * data (可選,無則返回空的table節點), head(可選, 標識是否存在表頭) **/var getTable=function(data,head){var table=document.createElement("table");var head=head||false; //存在表頭設標識為th,否則為tdvar tag=head?"th":"td"; //判斷是一維||二維,執行不同邏輯if(data[0] instanceof Array){ for(var i=0;i<data.length;i++){//第一行數據根據tag創建節點類型 (i==0)?table.appendChild(getTr(data[i],tag)):table.appendChild(getTr(data[i]));}}else if(data instanceof Array)table.appendChild(getTr(data,tag));return table; }; /** * table (必選, table節點) * uri 為生成excel的頭部標簽 * xmlns xml命名空間 * 返回xls資源 **/var getXls=function(table){var uri = 'data:application/vnd.ms-excel;base64,';var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" '+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" '+ 'xmlns="http://www.w3.org/TR/REC-html40">'+ '<head>'+ '<!--[if gte mso 9]>'+ '<xml>'+ '<x:ExcelWorkbook>'+ '<x:ExcelWorksheets>'+ '<x:ExcelWorksheet>'+ '<x:WorksheetOptions>'+ '<x:DisplayGridlines/>'+ '</x:WorksheetOptions>'+ '</x:ExcelWorksheet>'+ '</x:ExcelWorksheets>'+ '</x:ExcelWorkbook>'+ '</xml>'+ '<![endif]-->'+ '</head>'+ '<body>'+ '<table>{table}</table>'+ '</body>'+ '</html>'; /** * 轉碼 base 64 * window.btoa能從ascii/二進制流中創建一個base64編碼的字符串 * escape編碼 unescape 解碼字符串 * encodeURIComponent編碼 DecodeURIComponent 解碼字符串 **/ var base64 = function(s){ return window.btoa(unescape(encodeURIComponent(s))); };//返回替換完具體數據的xls模板 var getXlsXml = function(template,data){return template.replace(/{(/w+)}/g,data);};//返回資源鏈接return uri+base64(getXlsXml(template, table.innerHTML));};/** * IE瀏覽器 * 使用Microsoft ActiveXObject組件生成xls ( 只兼容IE瀏覽器,選擇允許加載組件 ) * table(必選, table節點) **/var msDownload=function(data){var xls = new ActiveXObject("Excel.Application"); xls.visible = true;var xlsBook = xls.Workbooks.Add;var xlsheet = xlsBook.Worksheets(1); for(var i=0;i<data.length;i++)if(data[0] instanceof Array) for(var j=0;j<data[0].length;j++)xlsheet.Cells(i+1,j+1).Value=data[i][j]; else xlsheet.Cells(1,i+1).Value=data[i]; //用完釋放 xls=null; };//參數: data(必選,一維||二維 數組), head(可選, 標識是否存在表頭)var download=function(data , head){ if(window.navigator.userAgent.indexOf("MSIE") >= 0)msDownload(data);else //下載(RestFul:資源下載置于超鏈接,地址為資源定位地址)window.location.href =getXls(getTable(data,head));}; return { getXls:getXls, msDownload:msDownload, download:download};}; //測試數據 var od=['aid','pwd','設備名稱','網關DK','區域'];var td=[ ['aid','pwd','設備名稱','網關DK','區域'], ['10086','root','松下R-399','208564165456542','2 #201'], ['10001','root','索尼SUV 09','456542895564165','2 #201'] ];var foo=function{ // new downloadTemplate.download(od,true); new downloadTemplate.download(td,true); }; </script></body> </html>測試結果:
在IE瀏覽器上需要允許加載ActiveX控件,之后在彈出的對話框中點擊"是"

下載下來的表格如下:

chrome:

打開表格:

以上所述是小編給大家介紹的JavaScript生成.xls文件的代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答