内容简介:我们在用Excel表格的时候经常需要合并数据,比如统计整个年级的数据的时候,需要合并每个班成绩的时候,这就需要一个快速将很多张数据类型相同表合并的组件我们将文件放到excle里,而合并的结果放到result里
简述需求
我们在用Excel表格的时候经常需要合并数据,比如统计整个年级的数据的时候,需要合并每个班成绩的时候,这就需要一个快速将很多张数据类型相同表合并的组件
需要的配置
- 现在Node.js能够很好进行文件的读写操作,只要能读写就能合并
- 社区已经有了封装好的一些插件比如node-xlsx,cnpm install就能用
- 引入Node本来的文件读写工具
const xlsx = require('node-xlsx') const fs = require('fs')
获取文件决定路径,定义合并数组
我们将文件放到excle里,而合并的结果放到result里
const _file = `${__dirname}/excel/` const _output = `${__dirname}/result/` let dataList = [ { name: '提交成绩',//你sheet的名字 data: [] }]
读出数据
fs.readdir(_file, function(err, files) {}里可以将所有_file读出来放到files数组里
解析数据
let excelData = xlsx.parse(`${_file}${item}`)//拼接的绝对路径 console.log(excelData) console.log(excelData[0].data)
提取数据进行拼接
files.forEach((item, index) => { try { console.log(`开始合并:${item}`) let excelData = xlsx.parse(`${_file}${item}`) if (excelData) { if (dataList[0].data.length > 0) { excelData[0].data.splice(0, 1) } dataList[0].data = dataList[0].data.concat(excelData[0].data) } } catch (e) { console.log('excel表格内部字段不一致,请检查后再合并。') } })
写入新的文件
var buffer = xlsx.build(dataList) fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) { if (err) { throw err } console.log('\x1B[33m%s\x1b[0m', `完成合并:${_output}resut.${new Date().getTime()}.xlsx`) })
完整代码
const xlsx = require('node-xlsx') const fs = require('fs') // excel文件夹路径(把要合并的文件放在excel文件夹内) const _file = `${__dirname}/excel/` const _output = `${__dirname}/result/` let dataList = [ { name: '提交成绩', data: [] }] init() function init () { fs.readdir(_file, function(err, files) { console.log(files) if (err) { throw err } files.forEach((item, index) => { try { console.log(`开始合并:${item}`) let excelData = xlsx.parse(`${_file}${item}`) if (excelData) { if (dataList[0].data.length > 0) { excelData[0].data.splice(0, 1) } dataList[0].data = dataList[0].data.concat(excelData[0].data) } } catch (e) { console.log('excel表格内部字段不一致,请检查后再合并。') } }) var buffer = xlsx.build(dataList) fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) { if (err) { throw err } console.log('\x1B[33m%s\x1b[0m', `完成合并:${_output}resut.${new Date().getTime()}.xlsx`) }) }) }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Serverless 组件开发尝试:全局变量组件和单独部署组件
- UI组件库从1到N开发心得-组件篇
- PJBreedsViewController 组件开发总结
- PJPickerView 组件开发总结
- Vue组件开发
- Laravel 后台开发常用组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Inside Larry's and Sergey's Brain
Richard Brandt / Portfolio / 17 Sep 2009 / USD 24.95
You’ve used their products. You’ve heard about their skyrocketing wealth and “don’t be evil” business motto. But how much do you really know about Google’s founders, Larry Page and Sergey Brin? Inside......一起来看看 《Inside Larry's and Sergey's Brain》 这本书的介绍吧!