使用nodejs解析xlsx、csv檔案轉換成JSON檔案詳細教程(含解決解析xlsx、csv檔案解析中文亂碼問題)
前言
最近工作中需要,領導給我一個csv檔案,讓我轉為JSON格式的檔案,決定使用nodejs來搞定,個人覺得這是用過的最簡單的方式;即使你沒用過node也可以通過本教程完成實現。你可能沒見過比這再詳細的教程文章了。可以收藏、轉載(轉載註明出處即可,不用與本人聯絡,大家分享學習,共同進步)。熟悉nodejs的朋友可以跳著閱讀,如有需要,聯絡本人,出一篇精簡版的供大家使用。
安裝node環境
使用node的前提是安裝好了node的環境,如何安裝node在網上已經有了大量的教程,我在這裡便不作贅述了。現在node安裝過,npm也是可以使用,不用單獨安裝了,我們在這裡做一下檢測,node和npm是否安裝成功:
如果npm的版本過低,可能會導致我們之後使用它下載依賴包失敗,有需要的話更新npm:
npm install -g npm
新建專案
新建專案,目錄結構如下(你也可以按照自己喜歡的方式),將xlsx、csv等檔案放在file目錄下面,待會我們要從這讀寫檔案
我們在csv2json檔案目錄下執行npm init命令,之後用來管理我們所需要的依賴包(不執行這一步也可以,之後不利於依賴包的管理)
npm init
一直回車使用預設配置就行,完成後根目錄下回生成一個package.json檔案,這個檔案用來管理我們的依賴包,如下:
下載所需依賴包
這裡我們需要nodejs
npm install fs node-xlsx --save-dev
安裝完成後,根目錄下回會生成node_modules資料夾,這個資料夾下就是我們所需要的依賴包,這時候package.json檔案會多出以下內容,列出我們已經下載的依賴:
接下來我們就進行具體程式碼的實現
程式碼實現
我們先來看一下要解析的檔案是什麼樣的:
這裡程式碼實現非常簡單,體現了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檔案,我們可以看看是否是我們需要的格式,根據這個格式對程式碼進行調整(具體實現要根據具體需求來,在這裡我沒法給大家一個統一的格式,如有不解,可以通過文章下方的聯絡方式聯絡我,進行交流討論):
讀取生成的檔案
讀取檔案的程式碼更加簡潔,這裡不是主要內容,就貼個程式碼供各位測試,如有疑問,聯絡交流:
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格式進行儲存,如圖:
然後用我們剛才的程式碼解析這個data1.csv檔案,亂碼的問題就不存在了。
結語
由於最近工作比較繁忙,沒有時間來寫技術文章,現在將工作中遇到的一些解決方法分享給大家,希望和大家多交流討論。有不嚴謹的地方,也請大家批評指正,共同進步!
轉載請說明出處,謝謝!
聯絡方式:QQ1670765991