摘要:寫(xiě)入新的文件完成合并完整代碼文件夾路徑把要合并的文件放在文件夾內(nèi)提交成績(jī)開(kāi)始合并表格內(nèi)部字段不一致,請(qǐng)檢查后再合并。
簡(jiǎn)述需求 我們?cè)谟肊xcel表格的時(shí)候經(jīng)常需要合并數(shù)據(jù),比如統(tǒng)計(jì)整個(gè)年級(jí)的數(shù)據(jù)的時(shí)候,需要合并每個(gè)班成績(jī)的時(shí)候,這就需要一個(gè)快速將很多張數(shù)據(jù)類型相同表合并的組件 需要的配置
現(xiàn)在Node.js能夠很好進(jìn)行文件的讀寫(xiě)操作,只要能讀寫(xiě)就能合并
社區(qū)已經(jīng)有了封裝好的一些插件比如node-xlsx,cnpm install就能用
引入Node本來(lái)的文件讀寫(xiě)工具
const xlsx = require("node-xlsx") const fs = require("fs")獲取文件決定路徑,定義合并數(shù)組
我們將文件放到excle里,而合并的結(jié)果放到result里
const _file = `${__dirname}/excel/` const _output = `${__dirname}/result/` let dataList = [ { name: "提交成績(jī)",//你sheet的名字 data: [] }]讀出數(shù)據(jù) fs.readdir(_file, function(err, files) {}里可以將所有_file讀出來(lái)放到files數(shù)組里
let excelData = xlsx.parse(`${_file}${item}`)//拼接的絕對(duì)路徑 console.log(excelData) console.log(excelData[0].data)
files.forEach((item, index) => { try { console.log(`開(kāi)始合并:${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表格內(nèi)部字段不一致,請(qǐng)檢查后再合并。") } })寫(xiě)入新的文件
var buffer = xlsx.build(dataList) fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) { if (err) { throw err } console.log("x1B[33m%sx1b[0m", `完成合并:${_output}resut.${new Date().getTime()}.xlsx`) })完整代碼
const xlsx = require("node-xlsx") const fs = require("fs") // excel文件夾路徑(把要合并的文件放在excel文件夾內(nèi)) const _file = `${__dirname}/excel/` const _output = `${__dirname}/result/` let dataList = [ { name: "提交成績(jī)", data: [] }] init() function init () { fs.readdir(_file, function(err, files) { console.log(files) if (err) { throw err } files.forEach((item, index) => { try { console.log(`開(kāi)始合并:${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表格內(nèi)部字段不一致,請(qǐng)檢查后再合并。") } }) var buffer = xlsx.build(dataList) fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) { if (err) { throw err } console.log("x1B[33m%sx1b[0m", `完成合并:${_output}resut.${new Date().getTime()}.xlsx`) }) }) }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105205.html
摘要:支持讀寫(xiě)的模塊基于解析文件數(shù)據(jù)及生成文件,僅支持格式文件基于解析文件數(shù)據(jù),支持及格式文件基于將數(shù)據(jù)生成導(dǎo)出文件,生成文件格式為基于從文件中提取數(shù)據(jù),僅支持格式文件。代碼如下讀取文件內(nèi)容將文件內(nèi)容插入新的文件中 支持讀寫(xiě)Excel的node.js模塊node-xlsx: 基于Node.js解析excel文件數(shù)據(jù)及生成excel文件,僅支持xlsx格式文件;excel-parser: 基于...
摘要:請(qǐng)求錯(cuò)誤請(qǐng)求代碼封裝與基本一致,只是將換成即可。關(guān)于的使用是個(gè)能把組件的共享狀態(tài)抽取出來(lái),當(dāng)做一個(gè)全局單例模式進(jìn)行管理。首先確保你的已經(jīng)安裝,運(yùn)行來(lái)安裝。 項(xiàng)目地址:https://huangxizhou.com/project/iMap 技術(shù)棧 Vue.js Vuex Axios Webpack Leancloud(express) Echarts Electron(electr...
摘要:前言之前斷斷續(xù)續(xù)學(xué)習(xí)了,今天就拿拉勾網(wǎng)練練手,順便通過(guò)數(shù)據(jù)了解了解最近的招聘行情哈方面算是萌新一個(gè)吧,希望可以和大家共同學(xué)習(xí)和進(jìn)步。 前言 之前斷斷續(xù)續(xù)學(xué)習(xí)了node.js,今天就拿拉勾網(wǎng)練練手,順便通過(guò)數(shù)據(jù)了解了解最近的招聘行情哈!node方面算是萌新一個(gè)吧,希望可以和大家共同學(xué)習(xí)和進(jìn)步。 一、概要 我們首先需要明確具體的需求: 可以通過(guò)node index 城市 職位來(lái)爬取相關(guān)信...
摘要:起因運(yùn)營(yíng)人員需要將后臺(tái)的表格導(dǎo)出成,由于后端的同學(xué)忙于其他事情,想著是不是可以自己做一個(gè)服務(wù)來(lái)生成。另外再搭配就可以提供一個(gè)允許跨域請(qǐng)求的服務(wù)。這樣一個(gè)簡(jiǎn)單的接口就寫(xiě)完了,只要調(diào)用傳入和就可以生成文檔。 起因 運(yùn)營(yíng)人員需要將后臺(tái)的表格導(dǎo)出成Excel,由于后端的同學(xué)忙于其他事情,想著是不是可以自己做一個(gè)服務(wù)來(lái)生成。了解到有node-xlsx這樣的工具以后就開(kāi)工了。 框架 后臺(tái)選用了ko...
摘要:使用中庫(kù)進(jìn)行的生成操作近日,應(yīng)領(lǐng)導(dǎo)要求,從網(wǎng)上抓了一大批數(shù)據(jù)存入了數(shù)據(jù)庫(kù),可是媽媽批,市場(chǎng)妹子要的是表格啊,畢竟妹子的話還是要聽(tīng)的關(guān)鍵人家語(yǔ)氣蠻好的,就從網(wǎng)上查一些資料。 ## 使用nodejs中node-xlsx庫(kù)進(jìn)行excel的生成操作 ## 近日,應(yīng)領(lǐng)導(dǎo)要求,從網(wǎng)上抓了一大批數(shù)據(jù)存入了數(shù)據(jù)庫(kù),可是媽媽批 ,市場(chǎng)妹子要的是excel表格啊,畢竟妹子的話還是要聽(tīng)的(關(guān)鍵人家語(yǔ)氣蠻好的...
閱讀 3634·2021-11-16 11:45
閱讀 2348·2021-11-08 13:23
閱讀 2280·2021-10-11 10:59
閱讀 2958·2021-09-27 13:36
閱讀 2542·2019-08-30 15:54
閱讀 2728·2019-08-29 16:58
閱讀 2918·2019-08-29 16:56
閱讀 1438·2019-08-26 13:52