国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:40:53
字體:
來源:轉載
供稿:網友

這個需要對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就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白城市| 鸡东县| 大竹县| 广安市| 白朗县| 庄河市| 阿瓦提县| 仲巴县| 岳阳市| 商洛市| 邓州市| 岳阳县| 荔浦县| 龙里县| 达日县| 平利县| 屯昌县| 金华市| 唐海县| 洛川县| 远安县| 民和| 荣成市| 宝坻区| 吴江市| 布拖县| 巴彦淖尔市| 竹山县| 喀什市| 乐清市| 盐源县| 武汉市| 大庆市| 宜川县| 宜昌市| 桦甸市| 苍梧县| 武功县| 济源市| 来凤县| 阿拉善左旗|