当前位置: 首页 > Web前端 > JavaScript

会计老婆的前端服务员——节点操作Excel表格

时间:2023-03-27 17:10:58 JavaScript

前言我女朋友是会计,她每天要收拾两样东西,表格和我!平时,她收拾不了表格,心情不好,就来收拾我!按理说,表格是我被清理的罪魁祸首,那我要是拿到表格……岂不是……嘿嘿嘿嘿嘿这里有几张表格,你给我把几张表格的内容放到一个文件里。”这个时候,我已经意识到她最近心情不好,但是我表现的好多了,她也没有机会骂我,我知道,这只是借口,我一定不能让她得逞,还好我有“技术”O(∩_∩)O~接下来开始我的操作PS:今天一定不被骂准备文件夹a.xlsx:有两个表页面b.xlsx:有一个表页面目标将两个Excel表格合二为一,读取两个Excel表格的内容,合并为一个,写入新的Excel表格开始下载第三方$npminstallnode-xlsx//导入第三方constxlsx=require('node-xlsx')//开始读取excel文件//测试读取a.xlsx文件constworkbook=xlsx.parse('./a.xlsx')console.log(workbook)接下来,进入运行这个文件的命令行然后尝试$nodeindex.js结果是[{name:'firstpage',data:[[Array],[Array]]},{name:'Secondpage',data:[[Array],[Array]]}]我们发现第一个excelsheet的内容已经全部读出,然后详细打印数组的内容console.log(workbook[0].data)我们再看一下结果[['Name','性别','年龄'],['前端小灰狼','男',18]]我们发现当前表的所有内容都出现了,如果我们只需要合并几个表,其实不需要做多余的操作,这个数据可以用来读取两个文件并整合数组index.js//importthird-partyconstxlsx=require('node-xlsx')//读取第一个文件constworkbook1=xlsx.parse('./a.xlsx')constworkbook2=xlsx.parse('./b.xlsx')//整合两个读取的文件constworkbookResult=[...workbook1,...workbook2]runconsole.log(workbookResult)查看结果[{name:'第一页',data:[[Array],[Array]]},{name:'第二页',data:[[Array],[Array]]},{name:'财务自由',data:[[Array],[Array],[Array],[Array],[Array],[Array],[Array]]}]都读出来了如果我猜对了,那么这个数据就不用调整了,按照这个格式重新写入.xlsx文件即可。尝试创建Excel表格index.js//导入第三方constxlsx=require('node-xlsx')constfs=require('fs')//准备要写入的数据//这里的数据是一个Excelfileconstdata=[//每个对象都是一个表单页{//name属性是表单页的名称name:'Test',//data是表格页中的数据data:[//每个小数组是一行数据['姓名','性别','年龄'],//以此行为表头['前端小灰狼','男',18],['前锋教育','Confidential',11]]}]//使用xlsx生成表单流文件constworkboot=xlsx.build(data)//将生成的内容写入fs.writeFileSync('./test.xlsx',workboot)写入一个文件,我们发现在当前目录下多了一个test。通过写入xlsx文件,我们会发现读取的内容可以直接使用,正式开始合并工作OS:我的工作快完成了,看你怎么骂我。哼,女人!!可我这件事完成之后,要是让她尝到甜头,以后一定会让我做的。还是设计好吧,以后用起来会更方便。准备一个目录结构-src+data//存放所有等待合并的Excel表+index.js//逻辑文件起始代码index.js//引入第三方constxlsx=require('node-xlsx')constfs=require('fs')//装备一个数组整合所有内容letlist=[]//使用fs读取数据文件夹路径constpathInfo=fs.readdirSync('./data/')//循环生成pathInfo.forEach(item=>{//排除不以.xlsx结尾的文件if(!/\.xlsx$/.test(item))returnconstres=xlsx.parse(`./data/${item}`)list=[...list,...res]})//生成要写入的表流文件constworkboot=xlsx.build(list)//开始写入fs.writeFileSync('./result.xlsx',workboot)完成了,以后我合并表格会容易很多OS:然后她会不会让我做很多其他的事情,比如调整表格的内容(合并单元格,设置cellsize,...)别管她了,下次她有要求再说吧,我满足不了她一下子,给自己一点余地去完成工作。小灰太狼:“老婆,老婆,我完了,我没那么好。”“干嘛这么快”小灰狼:“拿着橘子就跑。”知识就是力量,知识就是力量”“你有这么好的东西,早不说,还跟我扯外语……”(媳妇,别打脸了。..)