前期准备:
插件安装:
npm install node-xlsx json2xls fs
第一步:读取 excel 表格数据
const xlsx = require('node-xlsx');
const sheets = xlsx.parse('./fault.xlsx');
sheet是一个json对象,格式为{name:"测试参数",data:[]},我们想要的数据就存储在data里,sheet["data"] 可以拿到某个sheet的数据。
第二步:数据拆解分析,得到想要的结构
这步骤就开个人发挥了。我本次是想吧数据表做按名称分组。
第三步:输出 excel
const fs = require('fs');
const path = require('path');
const json2xls = require('json2xls');
let xls = json2xls(json);
fs.writeFileSync('analysis.xlsx', xls,'binary');
完成写入。很简单!!!
完整示例
const xlsx = require('node-xlsx');
const sheets = xlsx.parse('./fault.xlsx');
const fs = require('fs');
const path = require('path');
const json2xls = require('json2xls');
const writeFile = (json) => {
let xls = json2xls(json);
fs.writeFileSync('analysis.xlsx', xls,'binary');
}
const analysis = (sheet) => {
let analysisArr = {} //分析后数据
//sheet是一个json对象,格式为{name:"测试参数",data:[]},我们想要的数据就存储在data里
for(let i=0; i<sheet["data"].length; i++){ //excel文件里的表格一般有标题所以不一定从0开始
let row = sheet['data'][i];
if(row){
let customerNameArr = []; //定义一数组
let customerName = row[1] && row[1].replace(/\s/g,'');
customerNameArr = customerName.split(",");
for(let j=0; j<customerNameArr.length; j++){
if(analysisArr[customerNameArr[j]]){
analysisArr[customerNameArr[j]]['时间'].push(new Date(1900, 0, row[0] - 1).toLocaleString().split(' ')[0]);
}else{
analysisArr[customerNameArr[j]] = {
"客户": customerNameArr[j],
"时间": [new Date(1900, 0, row[0] - 1).toLocaleString().split(' ')[0]]
};
}
}
}
}
//转换成 excel 的数组格式
let formatJson = [];
for (const key in analysisArr) {
if (analysisArr[key]) {
formatJson.push(analysisArr[key])
}
}
return formatJson;
}
const readFile = () => {
// 获取 excel 的 sheets 数据
sheets.forEach(function(sheet){
let analysisJson = analysis(sheet)
writeFile(analysisJson)
});
}
readFile();