Node.js读取本地CSV文件并且写入为JSON格式文件过程

 更新时间:2026年01月22日 10:10:32   作者:小火车况且况且  
本文介绍了使用Node.js v14.18.1读取CSV文件并处理中文乱码的方法,包括使用`fs.readdirSync`读取文件夹、`TextDecoder`处理编码、以及如何解析和处理CSV数据
  • 使用的Node.js版本是v14.18.1
  • 使用的Node.js版本是v14.18.1
  • 使用的Node.js版本是v14.18.1

下面使用到的API都是基于目前版本

1. 格式

1.1 项目文件夹格式

1.2.CSV文件格式

2. 操作

  • fs.readdirSync('./static')用于读取static文件夹下面的所有文件
  • dirs.filter(dir => /\.csv$/.test(dir)) 只需要以.csv结尾的文件
  • new TextDecoder('gbk').decode(file)因为node不能识别中文字符, 使用该方法就可以处理中文乱码问题
  • .split('\r\n')进行切割,就可以将每行数据分成一串字符串

  • getGBK[0].split(',') 获取表头, 用于组装数据

  • if (childList.length === 1) break说明该数据是空数据格式

外层循环时,需要注意i=1开始, 因为不需要遍历表头数据

完整代码

const fs = require('fs')
const dirs = fs.readdirSync('./static')

dirs.filter(dir => /\.csv$/.test(dir)).forEach(dir => {
    const file = fs.readFileSync(`./static/${fileName}`)
  	const getGBK = new TextDecoder('gbk').decode(file).split('\r\n')
  	// 获取表头, 用于组装数据
  	const headList = getGBK[0].split(',')
    const headLen = headList.length
    const gbkLen = getGBK.length
    // 遍历文件, 注意是从 i = 1 开始, 因为不需要表头
	for (let i = 1; i < gbkLen; i++) {
	    const gbkItem = getGBK[i]
	    const childList = gbkItem.split(',')
	    if (childList.length === 1) break // 说明该数据是空数据格式
	    const obj = {}
	    // 遍历表头数组
	    for (let j = 0; j < headLen; j++) {
	      const headItem = headList[j]
	      obj[headItem] = childList[j]
	    }
	    json.push(obj)
	  }
	  // 得到不需要文件后缀的名称
	  const getFile = fileName.split('.')[0]
	  // 写入文件数据
	  fs.writeFileSync(`./file/${getFile}.json`, JSON.stringify(json))
	})

最后结果

总结

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

相关文章

  • 服务端nodejs抓取jsonp接口数据实现示例

    服务端nodejs抓取jsonp接口数据实现示例

    这篇文章主要为大家介绍了服务端nodejs抓取jsonp接口数据实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • node+koa2+mysql+bootstrap搭建一个前端论坛

    node+koa2+mysql+bootstrap搭建一个前端论坛

    本篇文章通过实例给大家分享了用node+koa2+mysql+bootstrap搭建一个前端论坛的步骤,有需要的朋友参考下。
    2018-05-05
  • 基于Node实现可以操作MySQL的接口

    基于Node实现可以操作MySQL的接口

    这篇文章主要介绍了用Node写个可以操作MySQL的接口,以前也用Node写过接口,但不涉及数据库操作,而我们发现,后端写接口,基本都绕不开数据库操作,感觉不写一个能操作数据库的接口,就不算真正意义上学会了写接口,那我们今天就学习一下,如何写一个可以操作数据库的接口
    2024-05-05
  • nodejs中的http模块与npm模块使用

    nodejs中的http模块与npm模块使用

    这篇文章主要介绍了nodejs中的http模块与npm模块使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • node.js使用fs读取文件出错的解决方案

    node.js使用fs读取文件出错的解决方案

    在本篇文章里我们给大家带来一篇关于node.js使用fs读取文件出错的解决办法,有需要的朋友们参考下。
    2019-10-10
  • nvm版本导致npm install报错Unexpected token '.'的解决办法

    nvm版本导致npm install报错Unexpected token '.'的解决办法

    最近做项目遇到npm install 的问题,下面这篇文章主要给大家介绍了关于nvm版本导致npm install报错Unexpected token '.'的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • package.json的版本号更新优化方法

    package.json的版本号更新优化方法

    这篇文章主要为大家介绍了package.json的版本号更新优化方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Node.js express的基本使用详解

    Node.js express的基本使用详解

    Express是基于Node.js的轻量级Web框架,封装了HTTP服务、路由管理、中间件等核心功能,简化了Web应用和API开发,这篇文章给大家介绍Node.js express的基本使用,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • nodejs实现解析xml字符串为对象的方法示例

    nodejs实现解析xml字符串为对象的方法示例

    这篇文章主要介绍了nodejs实现解析xml字符串为对象的方法,涉及nodejs针对xml格式字符串的解析与转换相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 运行Node.js的IIS扩展iisnode安装配置笔记

    运行Node.js的IIS扩展iisnode安装配置笔记

    这篇文章主要介绍了运行Node.js的IIS扩展iisnode安装配置笔记,iisnode的扩展可以把Node.js程序托管到IIS,托管之后也意味着可以使用IIS里面的各种功能,需要的朋友可以参考下
    2015-03-03

最新评论