1. 程式人生 > >使用nodejs解析xlsx、csv檔案轉換成JSON檔案詳細教程(含解決解析xlsx、csv檔案解析中文亂碼問題)

使用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檔案展示

下載所需依賴包

這裡我們需要nodejs

fs檔案系統來進行之後的檔案讀寫,並且需要安裝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