js导出Excel表格超出26位英文字符的解决方法ES6
这个需要对Excel表格的表头编码规则有所了解,目前示例代码只扩展到52个字段
/** *json数据导入导出Excel表格示例代码 * / vararray_utils=require('./utils-array') varXLSX=require("xlsx"); module.exports={ writeExcel:function(headers,data,file,callback){ if(data.length==0){ varobj={} for(varvofheaders){ obj[v]='' } data.push(obj) } _writeExcel(headers,data,file,callback) }, /** *获取excel原始信息 *@parampath文件路径 */ info:function(path){ return_info(path) }, /** *格式化excel原始信息 *@parampath文件路径 */ formate_info:function(path){ returninfo_formate_info(path).formate }, info_formate_info:function(path){ returninfo_formate_info(path) } } var_info=function(path){ vark=XLSX.readFile(path,{type:'base64'}); varresult={} k.SheetNames.forEach(function(sheetName){ varworksheet=k.Sheets[sheetName]; result[sheetName]=XLSX.utils.sheet_to_json(worksheet); }); returnresult } varinfo_formate_info=function(path){ varinfo=_info(path) varresult={} for(varvalueininfo){ result[value]={} } for(varkey_infoininfo){ vararray=info[key_info] if(array_utils.isArray(array)||array.length>0){ varkeys_array=Object.keys(array[0]) varobj={} for(varvalueofkeys_array){ obj[value]=[] } for(varkeyinobj){ varsubject_clone=JSON.parse(JSON.stringify(array)) subject_clone.filter((v)=>{ for(varkinv){ if(k!=key){ deletev[k] } } returnv; }) varsubject_key_value=Array.from(array_utils.arrayQC(subject_clone),v=>v[key]) varobA=[] for(varvofsubject_key_value){ varobk={ id:null, v:v } for(varkeinkeys_array){ varthisIndex=keys_array.findIndex(x=>x==keys_array[ke]) varcurrentIndex=keys_array.findIndex(x=>x==key) if(thisIndexx[key]==v) obk[keys_array[ke]]=thisObj[keys_array[ke]] }catch(e){ console.error(e) } } } obA.push(obk) } obj[key]=obA } result[key_info]=obj } } return{ info:info, formate:result } } var_writeExcel=function(headers,data,file,callback){ var_headers=headers var_data=data; varheaders=_headers //为_headers添加对应的单元格位置 .map((v,i)=>Object.assign({},{ v:v, position:num(i)+1 })) //转换成worksheet需要的结构 .reduce((prev,next)=>Object.assign({},prev,{[next.position]:{v:next.v}}),{}); vardata=_data .map((v,i)=>_headers.map((k,j)=>Object.assign({},{ v:v[k], position:num(j)+(i+2) }))) //对刚才的结果进行降维处理(二维数组变成一维数组) .reduce((prev,next)=>prev.concat(next)) //转换成worksheet需要的结构 .reduce((prev,next)=>Object.assign({},prev,{[next.position]:{v:next.v}}),{}); //合并headers和data //console.log("测试data",data) varoutput=Object.assign({},headers,data); //获取所有单元格的位置 varoutputPos=Object.keys(output); //计算出范围 varref=outputPos[0]+':'+outputPos[outputPos.length-1]; //构建workbook对象 varwb={ SheetNames:['Sheet1'], Sheets:{ 'Sheet1':Object.assign({},output,{'!ref':ref}) } }; //导出Excel XLSX.writeFileAsync(file,wb,function(err){ callback(err) }); } //定位Excel位置 varnum=function(i){ varn=parseInt(i+65) if(n>90){ n=String.fromCharCode(65)+String.fromCharCode(i+39) returnn }else{ n=String.fromCharCode(n) returnn } }
以上这篇js导出Excel表格超出26位英文字符的解决方法ES6就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。