iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 16
0

複習完學習到的基本的東西,進入真正的學習日常。
來玩玩資料格式轉換吧!
開始用到一些 node.js的東西,雖然還不是很理解內部原理。
我需要把一筆從 excel 複製的資料,轉成我要的格式使用。

思考:我需要做什麼

  1. 讀取與寫入檔案
  2. 讀取後資料格式處理

環境建制提醒:

  1. node.js 安裝
  2. npm init 初始化一個專案

開始實作

使用的原始資料 excel:

資料一 "" 資料二 "" 資料三
"" "" 資料二 "" 資料三
"" "" 資料二 "" 資料三
"" "" 資料二 "" 資料三
資料一 "" 資料二 "" 資料三
"" "" 資料二 "" 資料三
"" "" 資料二 "" 資料三
資料一 "" 資料二 "" 資料三
  1. vi example.txt 將 excel 資料複製貼入

說明:我們用 vi 編輯器建立 example.txt ,把直接複製格子內的資料便會變成圖示內的樣子。儲存。

  1. vi example.js && require('fs') 引入檔案系統模組,以便讀取與寫入系統檔案,再來就剩中間的格式處理

說明:用到的 method 解釋

  • trim : 將字串最左右兩邊的多餘空白消除
  • split : 切割字串,並以陣列方式重新組合
  • push : 將資料放入陣列
  • JSON.stringify : 將我們得到的陣列物件做成 JSON 檔
var fs = require('fs')

var reformat = []
var tag = -1

var output = fs.readFileSync('example.txt', 'utf-8')
  .trim()
  .split('\n')
  .map((item) => {item.split('\t')})
  .map((item) => {
    var title, data, flag;
        title = item[0]
        data = item[2]
        flag = item[4]
    if (title !== "") {
       reformat.push({ 'title': title, 'content': [{ 'name': data, 'flag': flag }]})
       tag += 1;
       }
    else {
       reformat[tag].content.push({ 'name': data, 'flag': flag })
       }
    })

reformat = JSON.stringify(reformat)
fs.writeFileSync('example.json', reformat, 'utf-8')
  1. 下指令 node example.js
    說明:執行以上程式碼之後,得到我們新的資料 example.json ,結果如畫面。

完成!


上一篇
一個 JS 學習者的日常 day14
下一篇
一個 JS 學習者的日常 day 16
系列文
一個 JS 學習者的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言