golang 实现的 Excel 解析器。
- 多协程加速生成
- 支持 lua 配置生成
- 支持 json 配置生成
- id 重复检查
- 字段名重复检查
- 行注释
- 列注释
- json 内容合法性检查
- json 输出格式化(json 格式缩进美化)
- 支持生成标签(s=server, c=client, x=不生成, 空=server 和 client 都生成)
- 字段数据类型检查(支持
int,uint,float,bool,string,json,array,map,struct) - 配置错误详情输出
- 未修改的文件忽略生成(可以加速生成速度,不需要每次都全部生成一次)
- 支持纵向表
- 基础数据类型字段使用默认值填充字段
- 配置生成压缩
- 支持国际化翻译
- 数值类型范围检查
- id 公式检查
- path,xlsx 配置文件目录
- output,生成文件的输出目录,默认为
. - server,指定 server 端生成格式,例如:--server=json
- client, 指定 client 端生成约束,例如:--client=lua
- indent, 生成含有 json 类型的配置时,是否格式化(美化) json(默认关闭)
- force, 强制重新导出所有配置(默认关闭)
- compact, 生成的配置成行压缩,减少文件大小(默认关闭)
- i18n,国际化翻译配置路径
- lang,国际化翻译目标语言(en=英文;jp=日文;kr=韩文等)
ps:真正的输出路径格式为: output/[server|client]/文件格式,例如:./server/json 表示服务端 json 格式的输出目录。
解析器只识别名为 data 或者 vdata 的工作表。
- 横向表:Excel Sheet 命名为
data,一般常用的配置方式,支持多行数据配置。 - 纵向表:Excel Sheet 命名为
vdata,一般用来配置全局字段表,只支持一行数据配置。
执行:
excelparser.exe --path=./xlsx --server=lua --client=json --indent --force
Progress:[██████████████████████████████████████████████████][100%]
------------------------------+----------------------------------------------------------------------
FileName | Result
------------------------------+----------------------------------------------------------------------
system | 42 ms
------------------------------+----------------------------------------------------------------------
task | 43 ms
------------------------------+----------------------------------------------------------------------
- 示例 1
server 生成lua配置并导出到 ./server/lua 目录中;client 生成lua配置并导出到 ./client/lua 目录中。
excelparser --path=./xlsx --server=lua --client=lua
- 示例 2:
server 生成lua配置并导出到 ./server/lua 目录中;client 生成json配置并导出到 ./cient/json 目录中,并格式化 json。
excelparser --path=./xlsx --server=lua --client=json --indent
- 示例 3:
server 生成json配置到 ./out/server/json 目录中,并使用 ./i18n 目录中的 en.xlsx 翻译文件来替换配置中的 i18n 类型配置值。
excelparser.exe --force=true --path=./xlsx --output=./out --server=json --i18n=./locales --lang=en_US
使用 json 类型时,可以在:后指定真正导出的数据结构,支持定长数组、变长数组、map(支持嵌套)、结构体,但不支持 any (不好描述结构体原型)。另外,需要注意的是,变长数组只适用于 json 中,表头描述的类型只支持定长数组。详细格式可参考 xlsx/template@模板.xlsx 。
| id | jsonval |
|---|---|
| int | json:[]int |
| s | |
| 配置唯一 id | json 字符串 |
| 1001 | [1,2,3] |
| id | list1 | |||
|---|---|---|---|---|
| int | [3]any | i18n | int | int |
| s | ||||
| 配置唯一 id | 奖励道具 | 道具名 | 道具 id | 道具数量 |
| 1001 | 这是一个道具 | 2 | 3 |
| id | list2 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| int | [3][3]int | [3]int | int | int | int | [3]int | int | int | int | [3]int | int | int | int |
| s | |||||||||||||
| 配置唯一 id | 奖励列表 | ||||||||||||
| 1001 | 1 | 2 | 3 | 11 | 22 | 33 | 11 | 22 | 33 |
| id | map1 | ||||
|---|---|---|---|---|---|
| int | map[int]string | int | string | int | string |
| s | |||||
| 配置唯一 id | 简单 map | ||||
| 1001 | 1 | aaa | 2 | bbb |
| id | map2 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| int | map[int]map[int]string | int | map[int]string | int | string | int | map[int]string | int | string |
| s | |||||||||
| 配置唯一 id | 嵌套 map | 子 map1 | 子 map2 | ||||||
| 1001 | 1 | 111 | bbb | 2 | 111 | bbb |
| id | map3 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| int | map[int][3]int | int | [3]int | int | int | int | int | [3]int | int | int | int |
| s | |||||||||||
| 配置唯一 id | 数组 map | 数组 1 | 数组 2 | ||||||||
| 1001 | 101 | 11 | 22 | 33 | 102 | 11 | 22 | 33 |
| id | s1 | s1.a | s1.b | s1.c | s1.d | s1.e | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| int | struct | int | string | [3]int | int | int | int | [2][3]int | [3]int | int | int | int | [3]int | int | int | int | int |
| s | |||||||||||||||||
| 配置唯一 id | 结构体 | 字段 a | 字段 b | 字段 c | 字段 d | 字段 e | |||||||||||
| 1001 | 111 | 2222 | 1 | 2 | 3 | 122 | 222 | 333 | 122 | 222 | 333 | 1001 |
本章节用于统一 Excel 配置表的命名与组织方式,适用于所有导表相关配置。
Excel 文件命名格式:配置中文名@导出英文名.xlsx
- 中文名可选。
- 示例:
D-道具@item.xlsx、error.xlsx。
可导出的 Sheet 名称必须以下列前缀开头:
data@:横向表vdata@:竖向表
示例:data@道具、data@错误码、vdata@全局字段表。
一个 Excel 文件只能包含一个可导出的 Sheet。
若一个功能包含多个配置,请将多个 Excel 放在同一文件夹内,按“包(模块)”概念进行组织。
推荐结构示例:
xlsx/
道具系统/
D-道具@item.xlsx
D-道具来源@item_source.xlsx
任务系统/
D-任务@task.xlsx
D-任务奖励@task_reward.xlsx
禁止使用“一个 Excel 导出多个 Sheet”的组织方式。
不推荐示例:
配置总表.xlsx
- data@道具
- data@任务
- data@错误码
- 结构清晰:同一功能下的配置集中管理,维护更简单。
- 协作友好:多人并行编辑时,文件冲突更少。
- 操作高效:避免单文件 Sheet 过多,定位与切换更方便。
