53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
/**
|
||
* @description excel批量合成工具
|
||
* @author cmyh100
|
||
*/
|
||
|
||
|
||
// 公共库
|
||
const xlsx = require('node-xlsx')
|
||
const fs = require('fs')
|
||
// excel文件夹路径(把要合并的文件放在excel文件夹内)
|
||
const _file = `${__dirname}/excel/`
|
||
const _output = `${__dirname}/result/`
|
||
// 合并数据的结果集
|
||
let dataList = [{
|
||
name: 'sheet1',
|
||
data: []
|
||
}]
|
||
|
||
init()
|
||
function init () {
|
||
fs.readdir(_file, function(err, files) {
|
||
if (err) {
|
||
throw err
|
||
}
|
||
// files是一个数组
|
||
// 每个元素是此目录下的文件或文件夹的名称
|
||
// console.log(`${files}`);
|
||
files.forEach((item, index) => {
|
||
try {
|
||
// console.log(`${_file}${item}`)
|
||
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(e)
|
||
console.log('excel表格内部字段不一致,请检查后再合并。')
|
||
}
|
||
})
|
||
// 写xlsx
|
||
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`)
|
||
})
|
||
})
|
||
} |