最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs使用xlsx插件讀取和生成excel文件方式

 更新時(shí)間:2025年06月11日 11:22:10   作者:&活在當(dāng)下&  
這篇文章主要介紹了Nodejs使用xlsx插件讀取和生成excel文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Nodejs xlsx插件讀取和生成excel文件

最近接到一個(gè)任務(wù),領(lǐng)導(dǎo)讓比對(duì)兩個(gè) excel 文件中指定列的數(shù)據(jù),如果有一樣的,篩選出來(lái)整理到新的 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ù)寫(xiě)入并生成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ù)寫(xiě)入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 文件所在目錄打開(kāi)cmd命令窗口,執(zhí)行如下命令,即可運(yùn)行:

node operateExcel.js

調(diào)用 readFile 函數(shù)輸出 json 數(shù)據(jù)

如圖:

調(diào)用 writeFile 方法

將 test.xlsx 中讀取的 json 數(shù)據(jù)寫(xiě)入并生成到 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ù)寫(xiě)入并生成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ù)寫(xiě)入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')
//通過(guò)遍歷jsonData01,獲取test01文件中的姓名列的數(shù)據(jù),這里idArr是姓名列的數(shù)據(jù)組成的數(shù)組
const idArr=jsonData01.map(v=>v['姓名'])
//這里將文件test02與test01中的姓名列進(jìn)行對(duì)比,如果文件test02中的姓名在文件test01中,則篩選出來(lái)
const newJsonData = jsonData02.filter(v=>idArr.includes(v['姓名']))
//生成test文件,并將篩選出來(lái)的數(shù)據(jù)寫(xiě)入到test文件中
writeFile('C:/Users/xxxx/Desktop/test/test.xlsx',newJsonData) 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • nvm安裝步驟及使用方法

    nvm安裝步驟及使用方法

    nvm是一個(gè)管理nodejs版本的工具。在實(shí)際的開(kāi)發(fā)中,有些項(xiàng)目的開(kāi)發(fā)依賴需要低版本的nodejs運(yùn)行環(huán)境,有些則需要高版本的nodejs,此時(shí)我們就需要使用nvm來(lái)切換nodejs版本,接下來(lái)通過(guò)本文給大家講解nvm安裝步驟及使用方法,感興趣的朋友一起看看吧
    2023-01-01
  • 詳解npm 配置項(xiàng)registry修改為淘寶鏡像

    詳解npm 配置項(xiàng)registry修改為淘寶鏡像

    這篇文章主要介紹了詳解npm 配置項(xiàng)registry修改為淘寶鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Node.js中,在cmd界面,進(jìn)入退出Node.js運(yùn)行環(huán)境的方法

    Node.js中,在cmd界面,進(jìn)入退出Node.js運(yùn)行環(huán)境的方法

    今天小編就為大家分享一篇Node.js中,在cmd界面,進(jìn)入退出Node.js運(yùn)行環(huán)境的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Node.js實(shí)現(xiàn)批量去除BOM文件頭

    Node.js實(shí)現(xiàn)批量去除BOM文件頭

    這篇文章主要介紹了Node.js實(shí)現(xiàn)批量去除BOM文件頭,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-12-12
  • nodejs個(gè)人博客開(kāi)發(fā)第五步 分配數(shù)據(jù)

    nodejs個(gè)人博客開(kāi)發(fā)第五步 分配數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了nodejs個(gè)人博客開(kāi)發(fā)的分配數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • NodeJS實(shí)現(xiàn)跨域的方法(使用示例)

    NodeJS實(shí)現(xiàn)跨域的方法(使用示例)

    CORS是一種 W3C 標(biāo)準(zhǔn),它使用額外的 HTTP 頭來(lái)告訴瀏覽器讓運(yùn)行在一個(gè) origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問(wèn)來(lái)自不同源服務(wù)器上的指定的資源,這篇文章主要介紹了NodeJS實(shí)現(xiàn)跨域的方法,需要的朋友可以參考下
    2024-05-05
  • 三種Node.js寫(xiě)文件的方式

    三種Node.js寫(xiě)文件的方式

    這篇文章主要為大家詳細(xì)介紹了三種Node.js寫(xiě)文件的方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Node.js包管理工具(npm、yarn、cnpm)

    Node.js包管理工具(npm、yarn、cnpm)

    本文主要介紹了Node.js包管理工具,包含npm、yarn、cnpm者三種,借助包管理工具,可以快速開(kāi)發(fā)項(xiàng)目,提升開(kāi)發(fā)效率,下面就來(lái)具體介紹一下如何使用,感興趣的可以了解一下
    2024-08-08
  • npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法

    npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法

    這篇文章主要給大家介紹了關(guān)于npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法,文中通過(guò)圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Node.js中SerialPort(串口)模塊使用

    Node.js中SerialPort(串口)模塊使用

    本文主要介紹了Node.js中SerialPort(串口)模塊使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論

从化市| 汽车| 靖西县| 师宗县| 长宁县| 弥渡县| 色达县| 剑阁县| 饶阳县| 浠水县| 将乐县| 崇信县| 娄底市| 林西县| 蛟河市| 荔波县| 南汇区| 措美县| 新巴尔虎左旗| 大竹县| 阳高县| 景泰县| 石河子市| 南城县| 韶关市| 商南县| 新绛县| 建德市| 天祝| 达拉特旗| 龙南县| 乌兰察布市| 邵武市| 安化县| 开封市| 登封市| 保亭| 沾化县| 宣化县| 多伦县| 石楼县|