前端支持excel函数(会计老婆大人的前端小跟班儿)

前言

我女朋友,是个会计, 她每天都要收拾两样东西,表格和我!

通常情况下,她收拾不了表格,心情就会变差,随后就会收拾我!

按逻辑,表格就是我被收拾的罪魁祸首,那如果我搞定了表格······岂不是·······嘻嘻嘻

一个机会的出现

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

此时, 我已经意识到了, 她最近心情不好, 但是我又表现的比较好, 她没什么机会骂我

我知道, 这只是一个接口, 我一定不能让她得逞, 还好我有 "技术" O(∩_∩)O~

接下来, 我就开始了我的操作.

PS : 今天一定不能挨骂

准备工作文件夹

a.xlsx : 有两个表格页

前端支持excel函数(会计老婆大人的前端小跟班儿)(1)

b.xlsx : 有一个表格页

前端支持excel函数(会计老婆大人的前端小跟班儿)(2)

目标

把两个 Excel 表格合并成一个

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

开始搞下载第三方

$ npm install node-xlsx

练习读取文件

index.js

// 导入第三方 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 的文件

前端支持excel函数(会计老婆大人的前端小跟班儿)(3)

  • 通过写入方式, 我们会发现, 读取出来的内容是可以直接使用的
正式开始合并工作

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

但是我这次完成以后, 如果让她尝到甜头, 以后肯定还会让我搞, 不如设计好, 以后就方便多了

前端支持excel函数(会计老婆大人的前端小跟班儿)(4)

准备一个目录结构

- 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 : 那她会不会还让我做很多别的事情, 比如调整表格内容(合并单元格, 设置单元格大小, ...)

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

前端支持excel函数(会计老婆大人的前端小跟班儿)(5)

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

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页