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

 更新时间:2025年06月11日 11:22:10   作者:&活在当下&  
这篇文章主要介绍了Nodejs使用xlsx插件读取和生成excel文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

最近接到一个任务,领导让比对两个 excel 文件中指定列的数据,如果有一样的,筛选出来整理到新的 excel 中,由于需要对比的文件有几十个,每个文件的数据量还很大,所以,就想到用脚本处理,于是整理了如下笔记。

安装 xlsx 插件

npm install xlsx

创建 operateExcel.js 文件

//引入 xlsx 插件
const xlsx = require('xlsx')
/**
 * 读取excel中的数据,并以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中的数据
    const jsonData = xlsx.utils.sheet_to_json(sheet) // 将数据转成 json 格式
    return jsonData
}
/**
 * 将json数据写入并生成excel文件
 * @param {string} filePath 路径
 * @param {Array} jsonData 数据
 * @param {string} sheetName 表格名字, 默认 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,并将数据写入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环境下,在 operateExcel.js 文件所在目录打开cmd命令窗口,执行如下命令,即可运行:

node operateExcel.js

调用 readFile 函数输出 json 数据

如图:

调用 writeFile 方法

将 test.xlsx 中读取的 json 数据写入并生成到 test01.xlsx 文件中,结果如图:

下面是比对文件完整示例

//引入 xlsx 插件
const xlsx = require('xlsx')
/**
 * 读取excel中的数据,并以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中的数据
    const jsonData = xlsx.utils.sheet_to_json(sheet) // 将数据转成 json 格式
    return jsonData
}
/**
 * 将json数据写入并生成excel文件
 * @param {string} filePath 路径
 * @param {Array} jsonData 数据
 * @param {string} sheetName 表格名字, 默认 Sheet1
 */
function writeFile(filePath, jsonData, sheetName='Sheet1'){
    // 新建文件
    const excleBook = xlsx.utils.book_new() 
    // 向文件中添加sheet,并将数据写入sheet
    xlsx.utils.book_append_sheet(excleBook, xlsx.utils.json_to_sheet(jsonData), sheetName); 
    xlsx.writeFile(excleBook, filePath); // 输出文件
}
//读取test01文件中的数据
const jsonData01 = readFile('C:/Users/xxxx/Desktop/test/test01.xlsx')
//读取test02文件中的数据
const jsonData02 = readFile('C:/Users/xxxx/Desktop/test/test02.xlsx')
//通过遍历jsonData01,获取test01文件中的姓名列的数据,这里idArr是姓名列的数据组成的数组
const idArr=jsonData01.map(v=>v['姓名'])
//这里将文件test02与test01中的姓名列进行对比,如果文件test02中的姓名在文件test01中,则筛选出来
const newJsonData = jsonData02.filter(v=>idArr.includes(v['姓名']))
//生成test文件,并将筛选出来的数据写入到test文件中
writeFile('C:/Users/xxxx/Desktop/test/test.xlsx',newJsonData) 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nodejs将JSON字符串转化为JSON对象报错的解决

    nodejs将JSON字符串转化为JSON对象报错的解决

    这篇文章主要介绍了nodejs将JSON字符串转化为JSON对象报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Nodejs实现批量修改图片尺寸工具

    Nodejs实现批量修改图片尺寸工具

    本文主要为大家介绍了一个Node.js工具,可以通过简单的命令行操作,允许用户批量调整图片尺寸,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • 用NODE.JS中的流编写工具是要注意的事项

    用NODE.JS中的流编写工具是要注意的事项

    Nodejs读写流流的传输过程默认是以buffer的形式传输的,除非你给他设置其他编码形式, 小伙伴可以参考下。
    2016-03-03
  • nodeJs编写错误处理中间件问题

    nodeJs编写错误处理中间件问题

    这篇文章主要介绍了nodeJs编写错误处理中间件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Node.js前后端交互实现用户登陆的实践

    Node.js前后端交互实现用户登陆的实践

    本文主要介绍了Node.js前后端交互实现用户登陆的实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 13 个npm 快速开发技巧(推荐)

    13 个npm 快速开发技巧(推荐)

    这篇文章主要介绍了13 个npm 快速开发技巧,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • 关于Node.js的events.EventEmitter用法介绍

    关于Node.js的events.EventEmitter用法介绍

    本篇文章主要介绍了关于Node.js的events.EventEmitter用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Nodejs让异步变成同步的方法

    Nodejs让异步变成同步的方法

    今天小编就为大家分享一篇关于Nodejs让异步变成同步的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 基于uniapp与node.js实现的微信授权登录功能实例

    基于uniapp与node.js实现的微信授权登录功能实例

    前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术,下面这篇文章主要给大家介绍了关于如何基于uniapp与node.js实现的微信授权登录功能的相关资料,需要的朋友可以参考下
    2023-05-05
  • 详解使用nodeJs安装Vue-cli

    详解使用nodeJs安装Vue-cli

    这篇文章主要介绍了详解使用nodeJs安装Vue-cli,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论