{"id":26460122,"url":"https://github.com/snaticy/excelizor","last_synced_at":"2025-03-19T02:48:28.763Z","repository":{"id":57624286,"uuid":"116742381","full_name":"sNaticY/excelizor","owner":"sNaticY","description":"A simple tool to export .xlsx files to lua-table, json and their corresponding csharp classes and golang structs","archived":false,"fork":false,"pushed_at":"2018-03-04T00:30:26.000Z","size":3408,"stargazers_count":50,"open_issues_count":0,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-19T02:48:23.567Z","etag":null,"topics":["csharp","excel","game","golang","json","lua","unity","xlsx"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sNaticY.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-08T23:58:58.000Z","updated_at":"2024-12-16T11:26:06.000Z","dependencies_parsed_at":"2022-08-26T22:12:08.960Z","dependency_job_id":null,"html_url":"https://github.com/sNaticY/excelizor","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sNaticY%2Fexcelizor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sNaticY%2Fexcelizor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sNaticY%2Fexcelizor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sNaticY%2Fexcelizor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sNaticY","download_url":"https://codeload.github.com/sNaticY/excelizor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244345090,"owners_count":20438241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","excel","game","golang","json","lua","unity","xlsx"],"created_at":"2025-03-19T02:48:28.110Z","updated_at":"2025-03-19T02:48:28.757Z","avatar_url":"https://github.com/sNaticY.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# excelizor\n\nA simple tool that can be used to export .xlsx files to lua-table, json and their corresponding csharp classes and golang structs\n\nexcelizor 是一个简易的，用于将 .xlsx 文件导出为 lua-table、json 及其对应的 c# 类和 golang 结构体的工具\n\n[![Travis](https://travis-ci.org/sNaticY/excelizor.svg?branch=master)](https://travis-ci.org/sNaticY/excelizor) \n[![Go Report Card](https://goreportcard.com/badge/github.com/sNaticY/excelizor)](https://goreportcard.com/report/github.com/sNaticY/excelizor) \n[![GitHub release](https://img.shields.io/github/release/sNaticY/excelizor.svg)](https://github.com/sNaticY/excelizor/releases)\n[![license](https://img.shields.io/github/license/sNaticY/excelizor.svg)](https://github.com/sNaticY/excelizor/blob/master/LICENSE)\n\n## Installation | 安装\n\n```bash\n$ go get https://github.com/sNaticY/excelizor\n```\n\nor you could download release version directly at [Release Page](https://github.com/sNaticY/excelizor/releases)\n\n或直接前往 [Release页面](https://github.com/sNaticY/excelizor/releases) 下载\n\n## Usage | 使用方法\n\n``` Text\nUsage: excelizor -p \u003cpath\u003e [-lua=\u003cluaExportPath\u003e] [-json=\u003cjsonExportPath\u003e] [-csharp=\u003ccsharpExportPath\u003e] [-golang=\u003cgolangExportPath\u003e] [-tag=\u003ctag\u003e]\n  -csharp string\n    \tpath to place exported .cs class files, export no .cs files if parameter is missing\n  -golang string\n    \tpath to place exported .go struct files, export no .go files if parameter is missing\n  -json string\n    \tpath to place exported .json files, export no .json files if parameter is missing\n  -lua string\n    \tpath to place exported .lua files, export no .lua files if parameter is missing\n  -p path\n    \t[Required] Relative path of excel files folder\n  -tag string\n        only field with this tag or empty string will be exported\n```\n\n## Excel Content Format | Excel 内容格式\n\n![example](doc/example.png)\n\n### Sheet\n\nOnly the first sheet in .xlsx file will be export \n\n只有 .xlsx 的第一份表将会被导出，其默认名称为 \"Sheet1\"，命名为 \"Vertical\" 将会开启特殊的纵向表解析功能\n\n\u003e Default name in excel is \"Sheet1\", or you could give a special name \"Vertical\"\n\n### Head \u0026 Key | 表头与键\n\nThe first 4 rows in your excel is Head\n\n每个表格的前四行定义为表头\n\n1. First row is descriptions of each field, It will not be exported at all so you can fill it with everything you want.   \n2. Second row is name of each field. \n3. Third row is type of each field. [int, float, string, bool, dict, list]\n4. Forth row is tag of each field, same tag with arguments and empty tag will always be exported.\n\nThe first field must be \"Id-int\" as a key of every row\n\n1. 第一行是每一个对应字段的描述，该行的任何数据都不会被导出，因此可任意填写(一般是一个中文注释。。。)\n2. 第二行是字段名称\n3. 第三行是字段类型，如[int, float, string, bool, dict, list]等\n4. 第四行为对应字段的标签，仅当该值与导出时 -tag 参数一致或留空的字段会被导出\n\n第一个字段目前仅支持 \"Id-int\" 作为每一行数据的 key\n\n### Basic Type | 基本类型\n\n* int: `int32` in golang and `int` in csharp\n* string: is `string`\n* float: `float32` in golang and `float` in csharp\n* bool: is `bool`. [true, T, 1, TRUE] is `true` and [false, F, 0, FALSE] is `false`\n* comment: any string in type-row start with `//` is commet, that field in each row will be ignored\n\n\n* int: 对应 golang 的`int32`和 c# 中的`int`\n* string: 就是普通的`string`\n* float: 对应 golang 的`float32`和 c# 中的`float`\n* bool: 对应`bool`，可填写[true, T, 1, TRUE]代表`ture`，[false, F, 0, FALSE]代表`false`\n* comment: 任何一个字段的类型以`//`开头将会在导出时被忽略\n\nExcel\n\n|      | 整型       | 字符串            | 浮点      | 布尔     | 注释(不导出)       |\n| ---- | ---------- | ---------------- | --------- | -------- | ----------------- |\n| Id   | NumberTest | StringTest       | FloatTest | BoolTest | can be empty      |\n| Int  | int        | string           | float     | bool     | //comment         |\n|      |            |                  | client    | server   |                   |\n| 1001 | 345        | This is a string | 2,6       | true     | won't be exported |\n| 1002 | nil        | nil              | nil       | nil      | nil               |\n\nExport Json (-tag with \"client\"), so the field `bool BoolTest = true/false` will be ignored, but `float FloatTest = 2.6` will be included\n\n导出 Json 时添加 -tag=client 参数，因此该表中`bool BoolTest = true/false` 将会被忽略，而`float FloatTest = 2.6`会被导出\n\n``` json\n[ \n    { \n        \"Id\": 1001,\n        \"NumberTest\": 345,\n        \"StringTest\": \"This is a string\",\n        \"FloatTest\": 2.600,\n        \"BoolTest\": true\n    },\n    { \n        \"Id\": 1002\n    }\n]\n```\n\nExport Lua(-tag with 'server\"'), so the field `bool BoolTest = true/false` will be included, `float FloatTest = 2.6` will be ignored\n\n导出 Lua 时添加 -tag=server 参数，因此该表中`bool BoolTest = true/false` 将会被导出，而`float FloatTest = 2.6`会被忽略\n\n``` lua\nlocal BasicTypes = {\n    [1001] = {\n        Id = 1001,\n        NumberTest = 345,\n        StringTest = \"This is a string\",\n        BoolTest = true,\n    },\n    [1002] = {\n        Id = 1002,\n    },\n}\n\nreturn BasicTypes\n```\n\nExport csharp class (with no tag), so all the fields with tag \"client\" and \"server\" will be ignored\n\n导出 c# 不添加 tag 参数，因此标签为 \"client\" 或 \"server\" 的字段都会被忽略\n\n``` csharp\nusing System.Collections.Generic;\n\nnamespace Configs\n{\n    public class BasicTypes \n    {\n        public int Id;\n        public int NumberTest;\n        public string StringTest;\n    }\n}\n```\n\nExport golang struct\n\n``` go\npackage exports\n\ntype BasicTypes struct {\n\tId int32 `json:\"Id\"`\n\tNumberTest int32 `json:\"NumberTest\"`\n\tStringTest string `json:\"StringTest\"`\n}\n```\n\n### Nested Type | 嵌套类型\n\n* list\u003cT\u003e:δ  `List\u003cT\u003e` in csharp and `[]T` in golang\n* dict\u003cT\u003e:δ  `Dictionary\u003cstring, T\u003e` in csharp and `map[string]T` in golang\n\n\u003e T is any Type such as `float` or `int`,  δ is count of column which it cost in table, can be [0, +∞)], When δ == 0, the number of elements in the structure can be arbitrary and seperated with \"|\", otherwise, the maximum number of elements can not exceed the delta, only one element in every single cell.\n\t\n* list\u003cT\u003e:δ  对应 c# 的`List\u003cT\u003e`以及 golang 中的`[]T` \n* dict\u003cT\u003e:δ  对应 c# 的`Dictionary\u003cstring, T\u003e`以及 golang 中的`map[string]T`\n\n\u003e T 代表某个类型如`float`或`int`，δ 代表该字段占用的后续列数且 δ \u003e= 0，当 δ == 0 时，该 list 或 dict 中元素的个数将不受数量限制，且使用 \"|\" 分隔，当 δ \u003e 0 时，该 list 或 dict 中元素的数量将不得大于 δ，每个单元格中填写一个元素\n\nExcel\n\n|      | Spread Dictionary |       |       |       | Fold Dictionary      | Spread List   |      |      |      | Fold List     |\n| ---- | ----------------- | ----- | ----- | ----- | -------------------- | ------------- | ---- | ---- | ---- | ------------- |\n| Id   | dictTest1         | Item1 | Item2 | Item3 | DictTest2            | ListTest1     |      |      |      | ListTest2     |\n| int  | `dict\u003cfloat\u003e:3`   |       |       |       | `dict\u003cint\u003e:0`        | `list\u003cint\u003e:3` |      |      |      | `list\u003cfloat\u003e:0` |\n|      |                   |       |       |       |                      |               |      |      |      |               |\n| 2002 |                   | 4.44  | 5.55  | 6.66  | Item1=10 \\| Item2=11 |               | 123  | 124  | 125  | 0.2\\|0.4\\|0.6 |\n| 2003 |                   | 4.44  | nil   | 6.66  | nil                  | nil           |      |      |      | 1.3\\|1.5\\|1.7 |\n\nExport Json\n\n```json\n[ \n    { \n        \"Id\": 2002, \n        \"DictTest1\": { \n            \"Item1\": 4.440,\n            \"Item2\": 5.550,\n            \"Item3\": 6.660 \n        }, \n        \"DictTest2\": { \n            \"Item1\": 10,\n            \"Item2\": 11 \n        },\n        \"ListTest1\": [ \n            123,\n            124,\n            125\n        ],\n        \"ListTest2\": [ \n            0.200,\n            0.400,\n            0.600\n        ]\n    },\n    { \n        \"Id\": 2003, \n        \"DictTest1\": { \n            \"Item1\": 4.440,\n            \"Item3\": 6.660 \n        },\n        \"ListTest2\": [ \n            1.300,\n            1.500,\n            1.700\n        ]\n    }\n]\n```\n\nExport lua\n\n```lua\nlocal NestedTypes = {\n    [2002] = {\n        Id = 2002, \n        DictTest1 = {\n            Item1 = 4.440,\n            Item2 = 5.550,\n            Item3 = 6.660, \n        }, \n        DictTest2 = {\n            Item1 = 10,\n            Item2 = 11, \n        },\n        ListTest1 = {\n            [0] = 123,\n            [1] = 124,\n            [2] = 125,\n        },\n        ListTest2 = {\n            [0] = 0.200,\n            [1] = 0.400,\n            [2] = 0.600,\n        },\n    },\n    [2003] = {\n        Id = 2003, \n        DictTest1 = {\n            Item1 = 4.440,\n            Item3 = 6.660, \n        },\n        ListTest2 = {\n            [0] = 1.300,\n            [1] = 1.500,\n            [2] = 1.700,\n        },\n    },\n}\n\nreturn NestedTypes\n```\n\nExport csharp class\n\n```csharp\nusing System.Collections.Generic;\n\nnamespace Configs\n{\n    public class NestedTypes \n    {\n        public int Id;\n        public Dictionary\u003cstring, float\u003e DictTest1;\n        public Dictionary\u003cstring, int\u003e DictTest2;\n        public List\u003cint\u003e ListTest1;\n        public List\u003cfloat\u003e ListTest2;\n    }\n}\n```\n\nExport golang struct\n\n```go\npackage exports\n\ntype NestedTypes struct {\n\tId int32 `json:\"Id\"`\n\tDictTest1 map[string]float32 `json:\"DictTest1\"`\n\tDictTest2 map[string]int32 `json:\"DictTest2\"`\n\tListTest1 []int32 `json:\"ListTest1\"`\n\tListTest2 []float32 `json:\"ListTest2\"`\n}\n```\n\n### Multi-nested Type | 多重嵌套结构\n\n* list\u003cANY_TYPE_OR_NESTED_TYPE\u003e:δ such as list\u003cdict\u003cstring\u003e:0\u003e:5\n* dict\u003cANY_TYPE_OR_NESTED_TYPE\u003e:δ such as dict\u003clist\u003cdict\u003cfloat\u003e:0\u003e:2\u003e:3\n\n\u003e **MOST OF LOGIC IS EXACTLY THE SAME AS BEFORE. HARD TO EXPLAIN, LET'S SEE SOME EXAMPLES**\n\t\n* list\u003cANY_TYPE_OR_NESTED_TYPE\u003e:δ 例如 list\u003cdict\u003cstring\u003e:0\u003e:5\n* dict\u003cANY_TYPE_OR_NESTED_TYPE\u003e:δ 例如 dict\u003clist\u003cdict\u003cfloat\u003e:0\u003e:2\u003e:3\n\n\u003e **表格填写逻辑与之前完全相同，很难描述，大家直接看示例即可** 好吧其实是英文不好描述不出来，大概就是一个嵌套的结构使用\"{\"和\"}\"括起来再使用\"|\"分隔就好\n\nExcel\n\n| KEY  | DICTINDICT1           |          |       |       |          |       |       |\n| ---- | --------------------- | -------- | ----- | ----- | -------- | ----- | ----- |\n| Id   | DictTest3             | SubDict1 | Item1 | Item2 | SubDict2 | Item1 | Item2 |\n| int  | `dict\u003cdict\u003cint\u003e:2\u003e:2` |          |       |       |          |       |       |\n|      |                       |          |       |       |          |       |       |\n| 3001 |                       |          | 3111  | 3112  |          | 3121  | 3122  |\n| 3002 |                       | nil      |       |       |          | 3221  | 3222  |\n\n| DICTINDICT2             |                                 |                      | DICTINDICT3                              |\n| ----------------------- | ------------------------------- | -------------------- | ---------------------------------------- |\n| DictTest4               | SubDict1                        | SubDict2             | DictTest5                                |\n| `dict\u003cdict\u003cfloat\u003e:0\u003e:2` |                                 |                      | `dict\u003cdict\u003cstring\u003e:0\u003e:0`                 |\n|                         |                                 |                      |                                          |\n|                         | it1=31.11\\|it2=31.12\\|it3=31.13 | it1=31.21\\|it2=31.22 | Subdict1={item1=asd\\|item2=sdf}\\|Subdict2={item1=qwe\\|item2=wer} |\n| nil                     |                                 |                      | nil                                      |\n\nExport Json\n\n``` json\n[ \n    { \n        \"Id\": 3001, \n        \"DictTest3\": {  \n            \"SubDict1\": { \n                \"Item1\": 3111,\n                \"Item2\": 3112 \n            }, \n            \"SubDict2\": { \n                \"Item1\": 3121,\n                \"Item2\": 3122 \n            } \n        }, \n        \"DictTest4\": {  \n            \"SubDict1\": { \n                \"It1\": 31.110,\n                \"It2\": 31.120,\n                \"It3\": 31.130 \n            }, \n            \"SubDict2\": { \n                \"It1\": 31.210,\n                \"It2\": 31.220 \n            } \n        }, \n        \"DictTest5\": {  \n            \"Subdict1\": { \n                \"Item1\": \"asd\",\n                \"Item2\": \"sdf\" \n            }, \n            \"Subdict2\": { \n                \"Item1\": \"qwe\",\n                \"Item2\": \"wer\" \n            } \n        }\n...\n\n```\n\nExport lua\n\n```lua\nlocal MultiNestedTypes = {\n    [3001] = {\n        Id = 3001, \n        DictTest3 = { \n            SubDict1 = {\n                Item1 = 3111,\n                Item2 = 3112, \n            }, \n            SubDict2 = {\n                Item1 = 3121,\n                Item2 = 3122, \n            }, \n        }, \n        DictTest4 = { \n            SubDict1 = {\n                It1 = 31.110,\n                It2 = 31.120,\n                It3 = 31.130, \n            }, \n            SubDict2 = {\n                It1 = 31.210,\n                It2 = 31.220, \n            }, \n        }, \n        DictTest5 = { \n            Subdict1 = {\n                Item1 = \"asd\",\n                Item2 = \"sdf\", \n            }, \n            Subdict2 = {\n                Item1 = \"qwe\",\n                Item2 = \"wer\", \n            }, \n        },\n...\n```\n\nExport csharp class\n\n```csharp\nusing System.Collections.Generic;\n\nnamespace Configs\n{\n    public class MultiNestedTypes \n    {\n        public int Id;\n        public Dictionary\u003cstring, Dictionary\u003cstring, int\u003e\u003e DictTest3;\n        public Dictionary\u003cstring, Dictionary\u003cstring, float\u003e\u003e DictTest4;\n        public Dictionary\u003cstring, Dictionary\u003cstring, string\u003e\u003e DictTest5;\n...\n```\n\nExport golang struct\n\n```go\npackage exports\n\ntype MultiNestedTypes struct {\n\tId int32 `json:\"Id\"`\n\tDictTest3 map[string]map[string]int32 `json:\"DictTest3\"`\n\tDictTest4 map[string]map[string]float32 `json:\"DictTest4\"`\n\tDictTest5 map[string]map[string]string `json:\"DictTest5\"`\n...\n```\n\n\u003e **FOR MORE EXAMPLES, PLEASE CHECK `excels/nested_types.xlsx` AND `exports/nested_types.*`** \n\n\u003e 欲查看更多示例，请直接打开 `excels/nested_types.xlsx` 和 `exports/nested_types.*`**\n\n## Other Features | 其他特性\n\n### Customizable templates | 可自定义模板\n\nAll of exporting features are based on [go-template](https://golang.org/pkg/text/template/), so you can edit `templates/*.tmpl` to do anything you want\n\n导出功能基于 [go-template](https://golang.org/pkg/text/template/)，因此直接修改 `templates/*.tmpl` 即可任意修饰导出文件\n\n* csharp namespace | c# 命名空间\n* csharp class inherit some base class | 继承某父类\n* golang package name | golang 包名\n* ...\n\n### Auto convert file name | 自动转换文件名\n\nWe recommand your excel name is `full_lowercase_letters.xlsx`. When exporting csharp class file, it will auto convert your file name to `CamelFileName.cs` to adapt csharp code style. Exporting other files is not affected. \n\n当文件名为“全小写+下划线分割”式时，导出的 .cs 文件的文件名将会自动转换为驼峰式，其他文件名则保持不变\n\nAll the class or struct name, even lua table name will also be `CamelFileName`\n\n导出的 c# 类和 lua-table 表名以及 golang 结构体名都会自动转换为驼峰式\n\n### Auto convert field name | 自动转换字段名称\n\nIn csharp class and golang struct, public field should start with a capital letter. If you start with lowercase letter, we will automatically convert to capital letters for you\n\n在 c# 和 golang 中 public 字段名称首字母通常为大写，故字段首字母小写时将自动转换为大写\n\n### Vertical sheet | 纵向表\n\nSometimes you have only few rows in a sheet but many fields, it will be much easier to transpose your sheet. So we support vertical sheet.\n\n某些情况下一个表格只有很少的几列却有很多字段，通常进行转置操作后会更容易管理，因此纵向表的功能是被支持的。\n\n|      | 整型         | 字符串              | 浮点        | 布尔        | 布尔        | 布尔        | ...            |\n| ---- | ---------- | ---------------- | --------- | --------- | --------- | --------- | -------------- |\n| Id   | NumberTest | StringTest       | FloatTest | BoolTest1 | BoolTest2 | BoolTest3 | 4,5,6,7,8,9,10 |\n| int  | int        | string           | float     | bool      | bool      | bool      | ,,,            |\n|      |            |                  |           |           |           |           |                |\n| 1001 | 345        | This is a string | 2.6       | true      | false     | true      | ,,,            |\n\nEdit your sheet name (default is \"Sheet1\") to \"Vertical\" and then you can fill your cell like this\n\n将表名 (默认为\"Sheet1\") 修改为 \"Vertical\" 后按照以下方式填写表格后，\n\n|      | Id         | int    |      | 1001             |\n| ---- | ---------- | ------ | ---- | ---------------- |\n| 整型   | NumberTest | int    |      | 345              |\n| 字符串  | StringTest | string |      | This is a string |\n| 浮点   | FloatTest  | float  |      | 2.6              |\n| 布尔   | BoolTest1  | bool   |      | true             |\n| 布尔   | BoolTest2  | bool   |      | false            |\n| 布尔   | BoolTest3  | bool   |      | true             |\n| 布尔   | BoolTest4  | bool   |      | false            |\n| 布尔   | BoolTest5  | bool   |      | true             |\n| 布尔   | BoolTest6  | bool   |      | false            |\n| 布尔   | BoolTest7  | bool   |      | true             |\n| 布尔   | BoolTest8  | bool   |      | false            |\n| 布尔   | BoolTest9  | bool   |      | true             |\n| 布尔   | BoolTest10 | bool   |      | false            |\n\nThen everyhing still works well.\n\n直接导出即可。\n\n### Type check | 类型检查\n\nThat is a basic feature. We will check if the value is valid for the type, so if you fill `2..2`in a float cell, we will tell you.\n\n这只是基础功能，任何字段的值导出前都会进行检查以确认是否可以正确解析。如果在一个 float 字段中填写了 \"2..2\"，将会直接报错\n\n### Comment row | 注释行\n\nIf it is not enough for you to only use comment column ( field type start with \"//\" ) , You can insert a row which id start with \"//\". Everything in this row will be ignored.\n\n如果注释列的功能(以\"//\"起始的字段将被忽略)还不够的话，可以插入以\"//\"为id起始的一行，该行在导出时会被忽略。 \n\n|        | 整型           | 字符串            | 浮点      | 布尔     | 注释(不导出)       |\n| ------ | -------------- | ---------------- | --------- | -------- | ----------------- |\n| Id     | NumberTest     | StringTest       | FloatTest | BoolTest | can be empty      |\n| Int    | int            | string           | float     | bool     | //comment         |\n|  |  |  |  |  |  |\n| 1001   | 345            | This is a string | 2,6       | true     | won't be exported |\n| //1002 | ok, I can fill | everything       | because   | this row | will be ignored   |\n\n## Contributing\n\nIf you are interested in contributing to the excelizor project, please make a PR.\n\n如果你对本项目感兴趣可以随时 pull request\n\n## License\n\nThis project is licensed under the MIT License.\n\nLicense can be found [here](https://github.com/sNaticY/excelizor/blob/master/LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnaticy%2Fexcelizor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnaticy%2Fexcelizor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnaticy%2Fexcelizor/lists"}