<commit_before>xlsx2json
=========

## 作用
* 让excel表达复杂的json格式
* 将excel转成json
* 将json导入mongo数据库。

## 为什么要做这个项目？
开发游戏的时候，策划用的是excel，而我们的数据库是mongo。
我们的工作流是策划写excel，导出json，然后导入mongo数据库。

因为excel是二维的，无法表达mongo文档里面数组和subdocument等复杂结构。
按excel结构来设计mongo，会使mongo受限并无法使用某些特性。

有一个clojure项目 [excel-to-json ](https://github.com/mhaemmerle/excel-to-json) 可以完成这个功能。
但是不懂clojure表示压力很大而且有些功能不符合我们的需求。

so,就搞了这个项目。某些想法也是借鉴了[excel-to-json ](https://github.com/mhaemmerle/excel-to-json)，表示感谢。

## 使用说明
首次使用需要配置config.json

```json
{
    "xlsx": {
        "head": 2,//表头所在的行，第一行可以是注释，第二行是表头。
        "src": "./excel/**/[^~$]*.xlsx", //xlsx文件 glob配置风格
        "dest": "./json"    //导出的json存放的位置
    },

    "mongoimport": ".\\bin\\mongoimport.exe",

    "db": { //json要导入的数据库的配置，如果没有用户名密码，导入时候命令行加 --noauth
        "host": "127.0.0.1",
        "database": "princess",
        "user": "princess",
        "port": 27010,
        "pwd": "<PASSWORD>"
    }
}
```

注：node & mongoimport 命令用的是.\bin下面的exe。


* 查看帮助：执行`node index.js -h` 查看使用帮助；
* excel导出json：双击`export.bat` 即可将 `./excel/*.xlsx` 文件导出到 `./json` 下。
* json导入mongo：双击`import.bat`即可将./json下所有的json文件导入到数据库中。
collection的名字就是json文件的名字。
或者自己手动导入：
`mongoimport -h 127.0.0.1 --port 27017 -u username -p password -d db_name -c collection_name xxx.json --jsonArray`
* 还支持命令行传参导入导出特定excel，具体使用 node `index.js --help` 查看。


#### 示例1 test.xlsx
![test.xlsx](http://img3.douban.com/view/photo/photo/public/p2180848214.jpg)

输出如下：

```json
[{
    "id": 123,<commit_msg>增加版本说明。<commit_after>xlsx2json
=========

## 作用
* 让excel表达复杂的json格式
* 将excel转成json
* 将json导入mongo数据库。

## 为什么要做这个项目？
开发游戏的时候，策划用的是excel，而我们的数据库是mongo。
我们的工作流是策划写excel，导出json，然后导入mongo数据库。

因为excel是二维的，无法表达mongo文档里面数组和subdocument等复杂结构。
按excel结构来设计mongo，会使mongo受限并无法使用某些特性。

有一个clojure项目 [excel-to-json ](https://github.com/mhaemmerle/excel-to-json) 可以完成这个功能。
但是不懂clojure表示压力很大而且有些功能不符合我们的需求。

so,就搞了这个项目。某些想法也是借鉴了[excel-to-json ](https://github.com/mhaemmerle/excel-to-json)，表示感谢。

## 使用说明
首次使用需要配置config.json

```json
{
    "xlsx": {
        "head": 2,//表头所在的行，第一行可以是注释，第二行是表头。
        "src": "./excel/**/[^~$]*.xlsx", //xlsx文件 glob配置风格
        "dest": "./json"    //导出的json存放的位置
    },

    "mongoimport": ".\\bin\\mongoimport.exe",

    "db": { //json要导入的数据库的配置，如果没有用户名密码，导入时候命令行加 --noauth
        "host": "127.0.0.1",
        "database": "princess",
        "user": "princess",
        "port": 27010,
        "pwd": "<PASSWORD>"
    }
}
```

注：node & mongoimport 命令用的是.\bin下面的exe。node版本是0.10.26。mongoimport版本是2.6。


* 查看帮助：执行`node index.js -h` 查看使用帮助；
* excel导出json：双击`export.bat` 即可将 `./excel/*.xlsx` 文件导出到 `./json` 下。
* json导入mongo：双击`import.bat`即可将./json下所有的json文件导入到数据库中。
collection的名字就是json文件的名字。
或者自己手动导入：
`mongoimport -h 127.0.0.1 --port 27017 -u username -p password -d db_name -c collection_name xxx.json --jsonArray`
* 还支持命令行传参导入导出特定excel，具体使用 node `index.js --help` 查看。


#### 示例1 test.xlsx
![test.xlsx](http://img3.douban.com/view/photo/photo/public/p2180848214.jpg)

输出如下：

```json
[{
    "id": 123,
{'fraction_non_alphanumeric': 0.18181818181818182, 'fraction_numerical': 0.028305028305028304, 'mean_word_length': 3.9407894736842106, 'pattern_counts': {'":': 24, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '157717', 'n_tokens_mistral': 1791, 'n_tokens_neox': 1846, 'n_words': 175}