js导出excel表格超出26位英文字符怎么办?不是没有解决办法,下面小编就为大家带来一篇js导出excel表格超出26位英文字符的解决方法es6。具有很好的参考价值。一起跟随小编过来看看吧,希望对大家有所帮助。
这个需要对excel表格的表头编码规则有所了解,目前示例代码只扩展到52个字段
/**
*json数据导入导出excel表格示例代码
*
/
var array_utils = require('./utils-array')
var xlsx = require("xlsx");
module.exports = {
writeexcel : function (headers,data,file,callback) {
if(data.length ==0){
var obj = {}
for(var v of headers){
obj[v] = ''
}
data.push(obj)
}
_writeexcel(headers,data,file,callback)
},
/**
* 获取excel原始信息
* @param path 文件路径
*/
info : function(path){
return _info(path)
},
/**
* 格式化excel原始信息
* @param path 文件路径
*/
formate_info : function (path) {
return info_formate_info(path).formate
},
info_formate_info : function (path) {
return info_formate_info(path)
}
}
var _info = function(path) {
var k = xlsx.readfile(path, {type: 'base64'});
var result = {}
k.sheetnames.foreach(function(sheetname) {
var worksheet = k.sheets[sheetname];
result[sheetname] = xlsx.utils.sheet_to_json(worksheet);
});
return result
}
var info_formate_info = function(path){
var info = _info(path)
var result = {}
for(var value in info){
result[value] = {}
}
for(var key_info in info ){
var array = info[key_info]
if(array_utils.isarray(array) || array.length>0){
var keys_array = object.keys(array[0])
var obj = {}
for(var value of keys_array){
obj[value] = []
}
for( var key in obj ){
var subject_clone = json.parse(json.stringify(array))
subject_clone.filter( (v)=>{
for(var k in v){
if(k!=key){
delete v[k]
}
}
return v;
})
var subject_key_value = array.from(array_utils.arrayqc(subject_clone),v => v[key] )
var oba = []
for(var v of subject_key_value){
var obk = {
id : null,
v : v
}
for(var ke in keys_array){
var thisindex = keys_array.findindex(x=>x==keys_array[ke])
var currentindex = keys_array.findindex(x=>x==key)
if( thisindex < currentindex){
try {
var thisobj = array.find(x=>x[ 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;
var headers = _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}}), {});
var data = _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)
var output = object.assign({}, headers, data);
// 获取所有单元格的位置
var outputpos = object.keys(output);
// 计算出范围
var ref = outputpos[0] + ':' + outputpos[outputpos.length - 1];
// 构建 workbook 对象
var wb = {
sheetnames: ['sheet1'],
sheets: {
'sheet1': object.assign({}, output, { '!ref': ref })
}
};
// 导出 excel
xlsx.writefileasync( file , wb,function (err) {
callback(err)
});
}
//定位excel位置
var num=function(i){
var n=parseint(i+65)
if(n>90){
n=string.fromcharcode(65)+string.fromcharcode(i+39)
return n
}else {
n=string.fromcharcode(n)
return n
}
}
大家学会了吗?希望在大家遇到此类问题时能帮助到大家。
相关推荐:
nodejs导出excel的方法_node.js
mysql数据库导出excel xml等格式文件
php实现导出excel数据的类库用法示例
以上就是js导出excel表格超出26位英文字符怎么办的详细内容。