node实现excel文件与JSON数据格式互转

 

使用node脚本处理excel,需要先安装【node-xlsx】,即【npm install node-xlsx】,写好下面脚本后,执行【node ./transferExcelToArray.js】,然后你就会在同文件夹下面发现生成了一个【array.json】文件。

1. excel转JSON文件

// excel转JSON文件 transferExcelToJSON.js
const path = require('path');
var xlsx = require('node-xlsx');
const fs = require('fs');
var obj = xlsx.parse(__dirname + '/年度绩效评价表.xlsx');
// 把第一行表头去掉了
var excelObj = obj[0].data.slice(1);
let list = [];
excelObj.forEach(one => {
  let obj = {
    subFundTypeName: one[1],
    type: one[2],
    score: one[5],
    name: one[4],
    fundYear: one[0],
  };
  list.push(obj);
});
fs.writeFileSync(path.resolve(process.cwd(), './array.json'), JSON.stringify(list), function (error) {
  console.log(error);
});

 

2.JSON转excel文件

const path = require('path');
const fs = require('fs');
const xlsx = require('node-xlsx');

let data = fs.readFileSync(path.resolve(__dirname, './array.json'), 'utf-8');
data = JSON.parse(data);
let tableData = [
    ["名称","分数","日期"],
    ...data.map(one=>{
        return [one.name,one.score,one.date]
    })
]
//引入生成excel的依赖包
const list = [
  {
    name: 'sheet', // 工作薄的名称
    data: tableData ,
    // [
    //   ['表头1', '表头2', '表头3'],
    //   ['第1行第1列', '第1行第2列', '第1行第3列'],
    //   ['第2行第1列', '第2行第2列', '第2行第3列'],
    // ]
  },
  // 如果多个工作薄, 就是多个对象。格式如上
];
// 使用提供的构建 xlsx 文件的方法
const buffer = xlsx.build(list);
fs.writeFile('导出的excel名称.xlsx', buffer, function (err) {
  if (err) {
    console.log(err, '导出excel失败');
  } else {
    console.log('导出excel成功!');
  }
});

 

posted @ 2024-03-21 10:29  蛙仔  阅读(362)  评论(0编辑  收藏  举报