ES5導出數據生成文檔xls或csv (2)

1.兼容IE瀏覽器

2.無限制數據導出

console.log(res)
									jsonArr=[];
									if(res.length !=0){
										for(var i=0;i<res.length;i++){
											 var mm=res[i].materialNumber;
											 var mn=res[i].materialname;
											 var gg=res[i].materialModel;
											 var mal='';
											 var mnal='';
											 var gal='';
												if(mm==null){
													mal='';
												  }else if(mm.indexOf(",")>-1){
													  mal=mm.replace(/,/g,'|');
												  }else if(mm.indexOf(",")>-1){
													  mal=mm.replace(/,/g,'|');
												  }else{
													  mal= mm
												  }
												if(mn==null){
													mnal='';
												  }else if(mn.indexOf(",")>-1){
													  mnal=mn.replace(/,/g,'|');
												  }else if(mn.indexOf(",")>-1){
													  mnal=mn.replace(/,/g,'|');
												  }else{
													  mnal= mn
												  }
												 if(gg==null){
													 gal='';
												  }else if(gg.indexOf(",")>-1){
													  gal=gg.replace(/,/g,'|');
												  }else if(gg.indexOf(",")>-1){
													  gal=gg.replace(/,/g,'|');
												  }else{
													  gal= gg
												  }
											jsonArr.push({
												'storageName':res[i].storageName==null ? '':res[i].storageName,
												'srcnumber':res[i].srcnumber==null ? '':res[i].srcnumber,
												'billname':res[i].billname==null ? '':res[i].billname,
												'billfnumber':res[i].billfnumber==null ? '':res[i].billfnumber,
												'costcenterName':res[i].costcenterName==null ? '':res[i].costcenterName,
												'bizdate':res[i].bizdate==null ? '':res[i].bizdate,	
												'status':res[i].status==null ? '':res[i].status,	
												'tranName':res[i].tranName==null ? '':res[i].tranName,
												'ispresent':res[i].ISPRESENT==null ? '':res[i].ISPRESENT,	
												'materialNumber':mal,	
												'materialname':mnal,
												'materialModel':gal,
												'entryqty':res[i].entryqty==null ? '':res[i].entryqty,
												'measurename':res[i].measurename==null ? '':res[i].measurename,
												'jg':res[i].jg==null ? '':res[i].jg,
												'je':res[i].je==null ? '':res[i].je,
												'entrybaseqty':res[i].entrybaseqty==null ? '':res[i].entrybaseqty,
												'basemeasurename':res[i].basemeasurename==null ? '':res[i].basemeasurename,
												'depName':res[i].depName==null ? '':res[i].depName,
												'warename':res[i].warename==null ? '':res[i].warename,
												'creatorName':res[i].creatorName==null ? '':res[i].creatorName,
												'createTime':res[i].createTime==null ? '':res[i].createTime,	
												'auditorName':res[i].auditorName==null ? '':res[i].auditorName,
												'remark':res[i].remark==null ? '':res[i].remark	
	
											})
										}
									}
									return res;
								}
//支持大批量數據導出,目前測試15萬行 30列通過,導出時間約爲6秒
function toLargerCSV(data){
//CSV格式可以自己設定,適用MySQL導入或者excel打開。
//由於Excel單元格對於數字只支持15位,且首位爲0會捨棄 建議用 =“數值” 
	  if(data.length==0){
		  layui.layer.msg("沒有數據")
		  return
	  }
		var str = '庫存組織名稱,核心單據類型,單據類型,單據編碼,成本中心,業務日期,狀態,事務類型,是否贈品,物料編碼,物料名稱,規格,數量,計量單位,單價,產值,基本數量,基本計量單位,部門,倉庫,建單人,建單時間,審覈人,備註\n';

		for(let i=0;i<data.length;i++){
			 var materialNumber='';
			 var materialname='';
			 var materialModel='';
			 if(data[i].materialNumber.indexOf("|")>-1){//針對數值中有|的字符就轉換爲逗號
				 materialNumber=data[i].materialNumber.replace(/\|/g,",");
			 }else{
				 materialNumber=data[i].materialNumber
			 }
			 if(data[i].materialname.indexOf("|")>-1){//針對數值中有|的字符就轉換爲逗號
				 materialname= data[i].materialname.replace(/\|/g,",");
			 }else{
				 materialname= data[i].materialname
			 }
			 if(data[i].materialModel.indexOf("|")>-1){//針對數值中有|的字符就轉換爲逗號
				 materialModel= data[i].materialModel.replace(/\|/g,",");
			 }else{
				 materialModel= data[i].materialModel
			 }
		     str +=data[i].storageName+','+data[i].srcnumber+','+data[i].billname+','+data[i].billfnumber+','+data[i].costcenterName+','+data[i].bizdate+','+data[i].status+','+data[i].tranName+','+data[i].ispresent+','+materialNumber+','+materialname+','+materialModel+','+data[i].entryqty+','+data[i].measurename+','+data[i].jg+','+data[i].je+','+data[i].entrybaseqty+','+data[i].basemeasurename+','+data[i].depName+','+data[i].warename+','+data[i].creatorName+','+data[i].createTime+','+data[i].auditorName+','+data[i].remark+',\n';
		  }


		  if(!!window.ActiveXObject || "ActiveXObject" in window){//在IE瀏覽器的情況下導出
	            var blob = new Blob([decodeURIComponent(encodeURI("\uFEFF"+str))], {
	                type: "text/csv;charset=utf-8;"
	            });
	            window.navigator.msSaveBlob(blob, "產值表.csv")
	            
	        }else{//其他瀏覽器
	     
	            var blob = new Blob(["\uFEFF"+str], {type: 'text/csv;charset=utf-8;'});
                var link = document.createElement('a');
                link.download = '產值表.csv';
                link.href = window.URL.createObjectURL(blob);
                link.style.display = 'none';
                document.body.appendChild(link);
                link.click();  
	        }
	             
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章