分享 xlsx轉換json的強大工具(很實用)

作用

讓excel表達複雜的json格式,將xlsx文件轉成son。

使用說明

目前只支持.xlsx格式,不支持.xls格式。

首先設置好node環境變量。

配置config.json

{
    "xlsx": {
        "head": 2,// 表頭所在的行,第一行可以是註釋,第二行是表頭。
        "src": "./excel/**/[^~$]*.xlsx", // xlsx文件 glob配置風格
        "dest": "./json",    // 導出的json存放的位置
        "arraySeparator":"," // 數組的分隔符
    }
}

注:

  • 查看幫助:執行node index.js -h 查看使用幫助;
  • excel導出json:
    • windows: 雙擊export.bat 即可將 ./excel/*.xlsx 文件導出到 ./json 下。
    • mac: 運行./export.sh 即可將 ./excel/*.xlsx 文件導出到 ./json 下。
  • 還支持命令行傳參導入導出特定excel,具體使用 node index.js --help 查看。

示例1 test.xlsx

test.xlsx

輸出如下:

[{
    "id": 123,
    "desc": "description",
    "flag": true,
    "otherid": [1, 2],
    "words": ["哈哈", "呵呵"],
    "map": [true, true],
    "data": {
        "a": 123,
        "b": 45
    },
    "hero": [
      {"id": 2,"level": 30},
      {"id": 3,"level": 80}
    ]
}, {
    "id": 456,
    "desc": "描述",
    "flag": false,
    "otherid": [3, 5, 8],
    "words": ["shit", "my god"],
    "map": [false, true],
    "data": {
        "a": 11,
        "b": 22
    },
    "hero": [
      {"id": 9, "level": 38 },
      {"id": 17,"level": 100}
    ]
}]

支持以下數據類型

  • number 數字類型
  • boolean 布爾
  • string 字符串
  • date 日期類型
  • object 對象 // 不支持對象內有數組以及對象嵌套對象,防止表格過度複雜。
  • number-array 數字數組
  • boolean-array 布爾數組
  • string-array 字符串數組
  • object-array 對象數組

表頭規則

  • 基本數據類型(string,number,bool)時候,一般不需要設置會自動判斷,但是也可以明確聲明數據類型。
  • 字符串類型:此列表頭的命名形式 列名#string 。
  • 數字類型:此列表頭的命名形式 列名#number 。
  • 日期類型:列名#date 。格式YYYY/M/D H:m:s or YYYY/M/D or YYYY-M-D H:m:s or YYYY-M-D。(注意:目前xlsx文件裏面列必須設置爲文本類型,如果是日期類型的話,會導致底層插件解析出來錯誤格式的時間).
  • 布爾類型:此列表頭的命名形式 列名#bool 。
  • 基本類型數組:此列表頭的命名形式 列名#[] 。
  • 對象:此列表頭的命名形式 列名#{} 。
  • 對象數組:此列表頭的命名形式列名#[{}] 。

數據規則

  • 關鍵符號都是半角符號。
  • 數組使用逗號,分割。
  • 對象屬性使用分號;分割。
  • 列格式如果是日期,導出來的是格林尼治時間不是當時時區的時間,列設置成字符串可解決此問題。

原理說明

  • 依賴 node-xlsx 這個項目解析xlsx文件。
  • xlsx就是個zip文件,解壓出來都是xml。有一個xml存的string,有相應個xml存的sheet。通過解析xml解析出excel數據(json格式),這個就是node-xlsx 做的工作。
  • 本項目只需利用 node-xlsx 解析xlsx文件,然後拼裝自己的json數據格式。

補充

  • 實驗環境:win7_x64 + nodejs_v0.10.25(可在linux上執行)
  • 項目地址 xlsx2json master
  • 如有問題可以到QQ羣內討論:223460081
  • 項目中的某些工具函數測試用例請參見我的gist js:validate & js:convert。

個人補充 因爲本人是在Mac 上 操作的,所以 需要先暗轉 Node

這裏http://www.cnblogs.com/BinXu/p/6050850.html 是安裝Node 的一個博客。

安裝好後 直接使用你下載的 工程就可以了。太棒了。謝謝大神們。

發佈了26 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章