欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù),如果有一樣的,篩選出來整理到新的 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ò)的解決

    這篇文章主要介紹了nodejs將JSON字符串轉(zhuǎn)化為JSON對(duì)象報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Nodejs實(shí)現(xiàn)批量修改圖片尺寸工具

    Nodejs實(shí)現(xiàn)批量修改圖片尺寸工具

    本文主要為大家介紹了一個(gè)Node.js工具,可以通過簡(jiǎn)單的命令行操作,允許用戶批量調(diào)整圖片尺寸,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • 用NODE.JS中的流編寫工具是要注意的事項(xiàng)

    用NODE.JS中的流編寫工具是要注意的事項(xiàng)

    Nodejs讀寫流流的傳輸過程默認(rèn)是以buffer的形式傳輸?shù)?除非你給他設(shè)置其他編碼形式, 小伙伴可以參考下。
    2016-03-03
  • nodeJs編寫錯(cuò)誤處理中間件問題

    nodeJs編寫錯(cuò)誤處理中間件問題

    這篇文章主要介紹了nodeJs編寫錯(cuò)誤處理中間件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐

    Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐

    本文主要介紹了Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 13 個(gè)npm 快速開發(fā)技巧(推薦)

    13 個(gè)npm 快速開發(fā)技巧(推薦)

    這篇文章主要介紹了13 個(gè)npm 快速開發(fā)技巧,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-07-07
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Nodejs讓異步變成同步的方法

    Nodejs讓異步變成同步的方法

    今天小編就為大家分享一篇關(guān)于Nodejs讓異步變成同步的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 基于uniapp與node.js實(shí)現(xiàn)的微信授權(quán)登錄功能實(shí)例

    基于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
  • 詳解使用nodeJs安裝Vue-cli

    詳解使用nodeJs安裝Vue-cli

    這篇文章主要介紹了詳解使用nodeJs安裝Vue-cli,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評(píng)論