作用
讓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
下。
- windows: 雙擊
- 還支持命令行傳參導入導出特定excel,具體使用 node
index.js --help
查看。
示例1 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
orYYYY/M/D
orYYYY-M-D H:m:s
orYYYY-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 的一個博客。
安裝好後 直接使用你下載的 工程就可以了。太棒了。謝謝大神們。