Nodejs使用xlsx插件讀取和生成excel文件方式
Nodejs xlsx插件讀取和生成excel文件
最近接到一個(gè)任務(wù),領(lǐng)導(dǎo)讓比對(duì)兩個(gè) excel 文件中指定列的數(shù)據(jù),如果有一樣的,篩選出來整理到新的 excel 中,由于需要對(duì)比的文件有幾十個(gè),每個(gè)文件的數(shù)據(jù)量還很大,所以,就想到用腳本處理,于是整理了如下筆記。
安裝 xlsx 插件
npm install xlsx
創(chuàng)建 operateExcel.js 文件
//引入 xlsx 插件 const xlsx = require('xlsx') /** * 讀取excel中的數(shù)據(jù),并以json格式輸出 * @param {string} filePath 文件所在路徑 */ function readFile(filePath){ const fileContent = xlsx.readFile(filePath); // 讀取excel文件 const name = fileContent.SheetNames[0] // 獲取excel第一張sheet的名字 const sheet = fileContent.Sheets[name] // 獲取excel第一張sheet中的數(shù)據(jù) const jsonData = xlsx.utils.sheet_to_json(sheet) // 將數(shù)據(jù)轉(zhuǎn)成 json 格式 return jsonData } /** * 將json數(shù)據(jù)寫入并生成excel文件 * @param {string} filePath 路徑 * @param {Array} jsonData 數(shù)據(jù) * @param {string} sheetName 表格名字, 默認(rèn) Sheet1 */ function writeFile(filePath, jsonData, sheetName='Sheet1'){ const excleBook = xlsx.utils.book_new() // 新建文件 xlsx.utils.book_append_sheet(excleBook, xlsx.utils.json_to_sheet(jsonData), sheetName); // 向文件中添加sheet,并將數(shù)據(jù)寫入sheet xlsx.writeFile(excleBook, filePath); // 輸出文件 } const jsonData = readFile('C:/Users/xxxx/Desktop/test/test.xlsx') writeFile('C:/Users/xxxx/Desktop/test/test01.xlsx',jsonData)
test.xlsx 文件如圖:
在node環(huán)境下,在 operateExcel.js 文件所在目錄打開cmd命令窗口,執(zhí)行如下命令,即可運(yùn)行:
node operateExcel.js
調(diào)用 readFile 函數(shù)輸出 json 數(shù)據(jù)
如圖:
調(diào)用 writeFile 方法
將 test.xlsx 中讀取的 json 數(shù)據(jù)寫入并生成到 test01.xlsx 文件中,結(jié)果如圖:
下面是比對(duì)文件完整示例
//引入 xlsx 插件 const xlsx = require('xlsx') /** * 讀取excel中的數(shù)據(jù),并以json格式輸出 * @param {string} filePath 文件所在路徑 */ function readFile(filePath){ const fileContent = xlsx.readFile(filePath); // 讀取excel文件 const name = fileContent.SheetNames[0] // 獲取excel第一張sheet的名字 const sheet = fileContent.Sheets[name] // 獲取excel第一張sheet中的數(shù)據(jù) const jsonData = xlsx.utils.sheet_to_json(sheet) // 將數(shù)據(jù)轉(zhuǎn)成 json 格式 return jsonData } /** * 將json數(shù)據(jù)寫入并生成excel文件 * @param {string} filePath 路徑 * @param {Array} jsonData 數(shù)據(jù) * @param {string} sheetName 表格名字, 默認(rèn) Sheet1 */ function writeFile(filePath, jsonData, sheetName='Sheet1'){ // 新建文件 const excleBook = xlsx.utils.book_new() // 向文件中添加sheet,并將數(shù)據(jù)寫入sheet xlsx.utils.book_append_sheet(excleBook, xlsx.utils.json_to_sheet(jsonData), sheetName); xlsx.writeFile(excleBook, filePath); // 輸出文件 } //讀取test01文件中的數(shù)據(jù) const jsonData01 = readFile('C:/Users/xxxx/Desktop/test/test01.xlsx') //讀取test02文件中的數(shù)據(jù) const jsonData02 = readFile('C:/Users/xxxx/Desktop/test/test02.xlsx') //通過遍歷jsonData01,獲取test01文件中的姓名列的數(shù)據(jù),這里idArr是姓名列的數(shù)據(jù)組成的數(shù)組 const idArr=jsonData01.map(v=>v['姓名']) //這里將文件test02與test01中的姓名列進(jìn)行對(duì)比,如果文件test02中的姓名在文件test01中,則篩選出來 const newJsonData = jsonData02.filter(v=>idArr.includes(v['姓名'])) //生成test文件,并將篩選出來的數(shù)據(jù)寫入到test文件中 writeFile('C:/Users/xxxx/Desktop/test/test.xlsx',newJsonData)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nodejs將JSON字符串轉(zhuǎn)化為JSON對(duì)象報(bào)錯(cuò)的解決
這篇文章主要介紹了nodejs將JSON字符串轉(zhuǎn)化為JSON對(duì)象報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐
本文主要介紹了Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12關(guān)于Node.js的events.EventEmitter用法介紹
本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04基于uniapp與node.js實(shí)現(xiàn)的微信授權(quán)登錄功能實(shí)例
前端一直是一塊充滿驚喜的土地,不僅是那些富有創(chuàng)造性的頁(yè)面,還有那些驚贊的效果及不斷推出的新技術(shù),下面這篇文章主要給大家介紹了關(guān)于如何基于uniapp與node.js實(shí)現(xiàn)的微信授權(quán)登錄功能的相關(guān)資料,需要的朋友可以參考下2023-05-05