最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js导出Excel表格超出26位英文字符的解决方法ES6

来源:懂视网 责编:小OO 时间:2020-11-27 20:07:03
文档

js导出Excel表格超出26位英文字符的解决方法ES6

这个需要对Excel表格的表头编码规则有所了解,目前示例代码只扩展到52个字段。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 }};
推荐度:
导读这个需要对Excel表格的表头编码规则有所了解,目前示例代码只扩展到52个字段。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 }};

下面小编就为大家带来一篇js导出Excel表格超出26位英文字符的解决方法ES6。具有很好的参考和学习js的价值。对js感兴趣的一起跟随小编过来看看吧,希望对大家有所帮助

这个需要对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
 }

}

以上这篇js导出Excel表格超出26位英文字符的解决方法ES6就是小编分享给大家的全部内容了,希望能给大家一个参考!

文档

js导出Excel表格超出26位英文字符的解决方法ES6

这个需要对Excel表格的表头编码规则有所了解,目前示例代码只扩展到52个字段。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 }};
推荐度:
标签: 导出 方法 解决
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top