文件導(dǎo)出是web應(yīng)用里最常見(jiàn)的功能,特別是后臺(tái)系統(tǒng)。
如下,對(duì)導(dǎo)出功能進(jìn)行代碼整理:
/**
?*客戶(hù)端js導(dǎo)出csv這種字符型文檔
?*調(diào)用方法 Z.export(tableId,fileName);
?*table的ID,filename導(dǎo)出的文件名
?*同時(shí)支持傳參數(shù)給后臺(tái)生成Excel
?*
?*author zhanggongzi
*web? http://www.qingqingjianji.com/
?*date 2018-8-22 17:25:10
?*/
(function(){
var jsExport = {};
jsExport.VERSION = "1.0.0";
//導(dǎo)出csv文件,str = "列名1,列名2,列名3n值1,值2,值3";
jsExport.exportCsv = function(str,fileName){
var fileName = fileName || "export",
str = encodeURIComponent(str),
//ufeff因?yàn)閏sv文件開(kāi)頭不能留空
csv = "data:text/csv;charset=utf-8,ufeff";
var a = document.createElement("a");
a.href = csv+str;
a.download = fileName+".csv";
a.style.display = "none";
document.body.appendChild(a);
a.click();
setTimeout(function(){
document.body.removeChild(a);
},10);
}
? ?//遍歷表格內(nèi)容返回?cái)?shù)組
? ?jsExport.getTableText = function(id){
var mytable = document.getElementById(id);
var data = [];
for(var i=0,rows=mytable.rows.length; i
for(var j=0,cells=mytable.rows[i].cells.length; j
if(!data[i]){
data[i] = new Array();
}
data[i][j] = mytable.rows[i].cells[j].innerHTML;
}
}
return data;
? ?}
? ?//把獲取的表格數(shù)組轉(zhuǎn)字符串
? ?jsExport.dataToString = function(data){
var list = [];
if(Object.prototype.toString.apply(data) == "[object Array]"){
for(var i=0,j=data.length;i
list.push(data[i].join(","));
}
}
return list.join("n");
? ?}
? ?jsExport.export = function(tableId,fileName){
if(!tableId) return;
var tableData = this.getTableText(tableId);
var exportStr = this.dataToString(tableData);
var isIE = !!window.ActiveXObject || "ActiveXObject" in window;
if (isIE){
alert("IE瀏覽器不支持客戶(hù)端導(dǎo)出彰居,請(qǐng)使用谷歌瀏覽器!");
return false;
}else{
?this.exportCsv(exportStr,fileName);
}
//IE不管是用ActiveXObject("Excel.Application")還是msSaveOrOpenBlob方法體驗(yàn)都極差
// if (isIE && window.navigator.msSaveOrOpenBlob){
//? var blob = new Blob([decodeURI(encodeURI(exportStr))], {
//? type: "text/csv;charset=utf-8;"
//? });
//? navigator.msSaveBlob(blob, fileName+'.csv');
// }else{
// ? ? this.exportCsv(exportStr,fileName);
// }
? ?}
? ?//通過(guò)鏈接url傳參數(shù)給后臺(tái)生成Excel文件
? ?//url = http://www.xx.com/xx/xx?serviceId=xx&start_date=20180808&end_date=20181010";
? ?jsExport.toAExport = function(url){
var a = document.createElement('a');
a.style.display = 'none';
a.href = url;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
}, 100);
? ?}
? ?//通過(guò)表單提交下載
? ?//var params = {
? ?// ? ?start_date:20180808,
? ?// ? ?end_date:20181010,
? ?// ? ?serviceId:'xx'
? ?//};
? ?//var actionUrl = "http://www.xx.com/xx/xx";
? ?jsExport.toFormExport = function(actionUrl,parms,type){
var form = document.createElement("form");
form.style.display='none';
form.action = actionUrl;
form.method= type || "post";
document.body.appendChild(form);
for(var key in parms){
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = parms[key];
form.appendChild(input);
}
form.submit();
setTimeout(function(){
document.body.removeChild(form);
},10);
? ?}
? ?window.Z = jsExport;
})();