通过node-xlsx读写excel表格数据

我们在日常中经常会遇到excel数据处理等情况,如将excel 1中的数据处理后存入 excel2中,或者将其他格式数据存入excel中,我们可以借助node来处理一下简单重复的工作。

下载node-xlsx 自行安装,安装命令如下:

npm i node-xlsx

读取、写入文件

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

function readFile () {
  try {
    var tableData = xlsx.parse("bncs.csv");
    // 获取表格第一个sheet中的数据
    const item = tableData[0].data;
    handelData(item);
  }
  catch (e) {
    //输出日志
    console.log("excel读取异常,error=%s", e.stack);
  }
}
// 处理数据
function handelData (item) {
  let arr = [];
  // 根据自己需求选择从第几项开始循环
  for (let i = 1; i < item.length; i++) {
    const [add_time, modify_time, bh, mc, dz, jd, wd, szdxzqh] = item[i];
    let xzqhdm = JSON.parse(szdxzqh || "{}");
    let xzqh = xzqhdm.XZQHBH || "";
    let ele = [add_time, modify_time, bh, mc, dz, jd, wd, xzqh];
    arr.push(ele)
  }

  const sheets = [
 	// 第一个sheet,如果有多个sheet在后面追加
  	{
    	name: 'sheet1', //sheet 名称
    	data: arr
  	}
  ];
  writeFile(sheets)
}

// 调用读取文件
readFile();

// 设置表格样式
/**
 * 行、列计数是从下标 0 开始; r是列,c是行  (row,column 的简写)
*/
const sheetOptions = {
  '!merges': [{ s: { c: 6, r: 3 }, e: { c: 8, r: 5 } }], // 合并列 A4 - A6 行 7- 9
  '!cols': [{ wch: 6 }, { wch: 7 }, { wch: 10 }, { wch: 40 }] // 设置列宽
};
// 写入文件
async function writeFile (sheets) {
 // 生成 xlsx buffer
  const buffer = await xlsx.build(sheets, { sheetOptions });
  // 判断写入的这个文件是否存在,有则先删除后创建,无则直接创建
  await fs.stat('./res.csv', function (err, result) {
  	// 无则直接创建
    if (!result) {
    	fs.writeFileSync('./res.csv', buffer);
      	return false;
    }
    // 有则先删除
    fs.unlink('./res.csv', (unErr) => {
        // 删除成功;  删除的文件已经被打开也会导致删除文件失败
        if (!unErr) {
          fs.writeFileSync('./res.csv', buffer);
        }
      })
  })
}
// 调用写入文件
writeFile(sheets);

设置合并列,设置列宽等操作后效果
在这里插入图片描述

注:在读取csv文件时可能会出现文件乱码的情况,解决方案:通过过记事本打开,另存为格式选择utf-8即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值