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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。