js导出Excel表格超出26位英文字符的解决方法ES6
2017-11-15 08:28
716 查看
这个需要对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去除空字符方法和一个解决json乱码的方法
- js传参数受特殊字符影响错误的解决方法
- C# 导出excel单个单元格内容超出当前范围解决方法
- js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
- Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(比较巧妙,toLatin1压缩掉了QString自动给每个英文字符加上的那些00字节)
- ES6---JS异步编程的几种解决方法及其优缺点
- easyui messager.prompt没有输入默认值的解决办法=在JS中导出EXCEL的方法
- IE网页js语法错误2行字符1、FF中正常的解决方法
- js的form表单提交url传参数(包含+等特殊字符)的解决方法
- css中实现字符超出宽度自动换行和英语字符不断行的解决方法
- js的form表单提交url传参数(包含+等特殊字符)的解决方法
- requests爬取中文网页时中文字符变英文的解决方法
- Node.js Mongodb 密码特殊字符 @的解决方法
- thrift的js客户端收到含汉字字符中显示为乱码解决方法
- Winform 程式 TextBox 控制超出最大长度(英文与汉字)不可输入 解决方法
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- js传参数受特殊字符影响错误的解决方法
- 汉字/英文字符长度判断--JS版与Java方法版
- 1229处理既含有中文又含有英文字符的字符串的相关程序解决方法