前言
我女朋友,是个会计, 她每天都要拾掇两样货色,表格和我!通常状况下,她拾掇不了表格,情绪就会变差,随后就会拾掇我!按逻辑,表格就是我被拾掇的罪魁祸首,那如果我搞定了表格······岂不是·······嘻嘻嘻

一个机会的呈现"这里有几个表格, 你给我把几个表格外面的内容放在一个文件外面"

此时, 我曾经意识到了, 她最近情绪不好, 然而我又体现的比拟好, 她没什么机会骂我

我晓得, 这只是一个借口, 我肯定不能让她未遂, 还好我有 "技术" O(∩_∩)O~接下来, 我就开始了我的操作.PS : 明天肯定不能挨骂

筹备工作
文件夹
a.xlsx : 有两个表格页

b.xlsx : 有一个表格页

指标

把两个 Excel 表格合并成一个
读取两个 Excel 表格的内容, 合并成一个, 写入到一个新的 Excel 表格内

开始搞
下载第三方

$ npm install node-xlsx

// 导入第三方const xlsx = require('node-xlsx')// 开始读取 excel 文件// 测试读取 a.xlsx 文件const workbook = xlsx.parse('./a.xlsx')console.log(workbook)

接下来去命令行运行一下这个文件试试看

$ node index.js

失去的后果是

[  { name: '第一页', data: [ [Array], [Array] ] },  { name: '第二页', data: [ [Array], [Array] ] }]

咱们发现, 把第一个 excel 表格的所有内容都读取进去了

接下来具体打印一下数组内的内容

console.log(workbook[0].data)

再来看一下后果

[ [ '姓名', '性别', '年龄' ], [ '前端小灰狼', '男', 18 ] ]

咱们发现, 以后这个表中的所有内容都呈现了

如果咱们只须要合并若干表格的话, 其实是不须要做多余的操作的, 这个数据就能够应用

读取两个文件并整合数组

index.js

 // 导入第三方const xlsx = require('node-xlsx')// 读取第一个文件const workbook1 = xlsx.parse('./a.xlsx')const workbook2 = xlsx.parse('./b.xlsx')// 把两个读取到的文件整合const workbookResult = [ ...workbook1, ...workbook2 ]console.log(workbookResult)

运行一下看看后果

[  { name: '第一页', data: [ [Array], [Array] ] },  { name: '第二页', data: [ [Array], [Array] ] },  {    name: '财务自在',    data: [      [Array], [Array],      [Array], [Array],      [Array], [Array],      [Array]    ]  }]

全副读取进去了

如果我猜的没错, 那么这个数据是不须要调整的, 只有依照这个格局再次写入到一个 .xlsx 的文件中就能够了

尝试创立一个 Excel 表格

index.js

// 导入第三方const xlsx = require('node-xlsx')const fs = require('fs')// 筹备要写入的数据//   这里的一个 data 就是一个 Excel 文件const data = [    //    每一个对象就是一个表格页    {        //    name 属性就是表格页的名称        name: '测试',        //    data 就是表格页内的数据        data: [            //    每一个小数组就是一行数据            [ '姓名', '性别', '年龄' ], // 以这一行为表头            [ '前端小灰狼', '男', 18 ],            [ '千锋教育', '窃密', 11 ]        ]    }]// 利用 xlsx 生成表格流文件const workboot = xlsx.build(data)// 把生成好的内容写入一个文件fs.writeFileSync('./test.xlsx', workboot) 

运行当前, 咱们发现, 当前目录下多了一个 test.xlsx 的文件

通过写入形式, 咱们会发现, 读取进去的内容是能够间接应用的

正式开始合并工作

OS : 我的工作马上就要实现了, 看你怎么骂我. 哼, 女人 !!

然而我这次实现当前, 如果让她尝到苦头, 当前必定还会让我搞, 不如设计好, 当前就不便多了

筹备一个目录构造

- src    + data     // 寄存所有期待合并的 Excel 表格    + index.js   // 逻辑文件

开始代码
index.js

// 导入第三方const xlsx = require('node-xlsx')const fs = require('fs')// 配备一个数组用来整合所有内容let list = []// 利用 fs 读取 data 文件夹门路const pathInfo = fs.readdirSync('./data/')// 循环遍从来生成pathInfo.forEach(item => {  // 排除掉不是 .xlsx 结尾的文件  if (!/\.xlsx$/.test(item)) return  const res = xlsx.parse(`./data/${ item }`)  list = [ ...list, ...res ]})// 生成要写入的 表格流 文件const workboot = xlsx.build(list)// 开始写入fs.writeFileSync('./result.xlsx', workboot)

实现, 当前在让我合并表格这个事件就简略多了

OS : 那她会不会还让我做很多别的事件, 比方调整表格内容(合并单元格, 设置单元格大小, ...)

管她呢, 下次她有要求再说吧, 不能一次全都满足她, 给本人留一点余地

工作完结
小灰狼: "老婆, 老婆, 我弄完了, 我厉害不厉害"
"为什么这么快"
小灰狼: "拿了橘子跑了"
"什么?"
小灰狼: "knowledge is power,常识就是力量"
"你丫的有这好货色, 不早说,还跟我这儿拽洋文..."(媳妇儿,别打脸······)