使用nodejs解析xlsx、csv文件转换成JSON文件详细教程(含解决解析xlsx、csv文件解析中文乱码问题)

前言

最近工作中需要,领导给我一个csv文件,让我转为JSON格式的文件,决定使用nodejs来搞定,个人觉得这是用过的最简单的方式;即使你没用过node也可以通过本教程完成实现。你可能没见过比这再详细的教程文章了。可以收藏、转载(转载注明出处即可,不用与本人联系,大家分享学习,共同进步)。熟悉nodejs的朋友可以跳着阅读,如有需要,联系本人,出一篇精简版的供大家使用。

安装node环境

使用node的前提是安装好了node的环境,如何安装node在网上已经有了大量的教程,我在这里便不作赘述了。现在node安装过,npm也是可以使用,不用单独安装了,我们在这里做一下检测,node和npm是否安装成功:
检测node是否安装成功
如果npm的版本过低,可能会导致我们之后使用它下载依赖包失败,有需要的话更新npm:

npm install -g npm

新建项目

新建项目,目录结构如下(你也可以按照自己喜欢的方式),将xlsx、csv等文件放在file目录下面,待会我们要从这读写文件
目录结构
我们在csv2json文件目录下执行npm init命令,之后用来管理我们所需要的依赖包(不执行这一步也可以,之后不利于依赖包的管理)

npm init

一直回车使用默认配置就行,完成后根目录下回生成一个package.json文件,这个文件用来管理我们的依赖包,如下:
package文件展示

下载所需依赖包

这里我们需要nodejsfs文件系统来进行之后的文件读写,并且需要安装node-xlsx模块来进行xlsx、csv文件的解析,一般fs文件系统不需要单独安装,我们为了保险起见,在这里本地安装一下:

npm install fs node-xlsx --save-dev

安装完成后,根目录下回会生成node_modules文件夹,这个文件夹下就是我们所需要的依赖包,这时候package.json文件会多出以下内容,列出我们已经下载的依赖:
package依赖
接下来我们就进行具体代码的实现

代码实现

我们先来看一下要解析的文件是什么样的:

这里代码实现非常简单,体现了nodejs的强大:

var xlsx2json = require("node-xlsx");
var fs = require("fs");

var list = xlsx2json.parse("./file/data.csv" );
// 一般读取到的数据为[[{data: []}],[{data: []}]]格式
// 具体情况自己打印观察一下 console.log(data)
// 我这里只做遍历list[0].data的遍历,具体情况具体处理
var data = [...(list[0].data)];
var arr = [];
for (let i = 1 ; i < data.length; i++) {
    const param = {
       // 这里对数据进行处理,具体情况具体处理,相应值赋给相应字段
    };
    arr.push(param);
}
// 将数组转换成JSON格式并写入文件
var dataJson = JSON.stringify(arr);
fs.writeFileSync('./file/dataJson.json',dataJson);

保存后,我们执行node js/csv2json.js命令运行代码:

node js/csv2json.js

代码运行成功,我们会发现file目录下多出来一个dataJson.json文件,我们可以看看是否是我们需要的格式,根据这个格式对代码进行调整(具体实现要根据具体需求来,在这里我没法给大家一个统一的格式,如有不解,可以通过文章下方的联系方式联系我,进行交流讨论):
dataJson文件

读取生成的文件

读取文件的代码更加简洁,这里不是主要内容,就贴个代码供各位测试,如有疑问,联系交流:

var fs = require("fs");

fs.readFile('./file/dataJson.json','utf-8',function (err,data2) {
    if (err) throw err;
    data2 = JSON.parse(data2);
    console.log(data2);
});

生成JSON中是乱码?不要怕,教你解决方法!

一般情况,文件的字符编码可能和我们程序读取编码不一致,我们可以从要解析的文件进行操作,用记事本打开我们的xlsx、csv文件,然后另存为,选择utf-8格式进行保存,如图:
UTF-8格式文件
然后用我们刚才的代码解析这个data1.csv文件,乱码的问题就不存在了。

结语

由于最近工作比较繁忙,没有时间来写技术文章,现在将工作中遇到的一些解决方法分享给大家,希望和大家多交流讨论。有不严谨的地方,也请大家批评指正,共同进步!
转载请说明出处,谢谢!
联系方式:QQ1670765991

猜你喜欢

转载自blog.csdn.net/zf2014122891/article/details/85037646