nodejs 读写 excel 文件

安装 node-xlsx

npm install node-xlsx --save


读取 Excel

var xlsx = require('node-xlsx');
 
// 解析得到文档中的所有 sheet
var sheets = xlsx.parse('test.xls');
 
// 遍历 sheet
sheets.forEach(function(sheet){
  console.log(sheet['name']);
  // 读取每行内容
  for(var rowId in sheet['data']){
    console.log(rowId);
    var row=sheet['data'][rowId];
    console.log(row);
  }
});


写入 Excel

var data = [{
  name: 'sheet1',
  data: [
    ['ID', 'Name', 'Score'],
    ['1', 'Michael', '99'],
    ['2', 'Jordan', '98']
  ]
},
{
  name: 'sheet2',
  data: [
    ['AA', 'BB'],
    ['23', '24']
  ]
}
]
var buffer = xlsx.build(data);


// 写入文件
fs.writeFile('a.xlsx', buffer, function (err) {
  if (err) {
    console.log("Write failed: " + err);
    return;
  }
  console.log("Write completed.");
});


控制单元格的宽度

import xlsx from 'node-xlsx';
// Or var xlsx = require('node-xlsx').default;

const dataSheet1 = [[1, 2, 3], [true, false, null, 'sheetjs'], ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'], ['baz', null, 'qux']];
const dataSheet2 = [[4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14], ['baz', null, 'qux']];
const range = {s: {c: 0, r:0 }, e: {c:0, r:3}}; // A1:A4
const sheetOptions = {'!merges': [ range ]};

var buffer = xlsx.build([{name: "myFirstSheet", data: dataSheet1}, {name: "mySecondSheet", data: dataSheet2, options: sheetOptions}]); // Returns a buffer


读取的 Excel 的内容可以批量导入到 MySQL。使用(sequelize)bulkCreate函数中的updateOnDuplicate设置,可以批量更新数据。


参考:

https://github.com/mgcrea/node-xlsx

https://www.jianshu.com/p/1c42659f5680

https://javascript.net.cn/article?id=768

修改时间 2021-01-14

真诚赞赏,手留余香
赞赏
随机推荐
php判断数组中是否存在指定键(key)的两种方法
Markdown 基本语法
Mac OS原来自带了apache,基本用法总结
JavaScript实现Base64编码转换
(转)关于百度地图和高德地图,关于地图坐标系
CentOS 8 编译安装 Nginx 和 Naxsi Waf 防火墙
“关于”中故事删减之前
DDOS 专题
跟Github学习设计不符合 CRUD 情况的RESTful API
Mysql无法启动 使用GPT Drive