Skip to content

Latest commit

 

History

History
210 lines (155 loc) · 8.93 KB

File metadata and controls

210 lines (155 loc) · 8.93 KB

excelparser

golang 实现的 Excel 解析器。

特性

  • 多协程加速生成
  • 支持 lua 配置生成
  • 支持 json 配置生成
  • id 重复检查
  • 字段名重复检查
  • 行注释
  • 列注释
  • json 内容合法性检查
  • json 输出格式化(json 格式缩进美化)
  • 支持生成标签(s=server, c=client, x=不生成, 空=server 和 client 都生成)
  • 字段数据类型检查(支持 intuint,floatbool, stringjsonarraymapstruct)
  • 配置错误详情输出
  • 未修改的文件忽略生成(可以加速生成速度,不需要每次都全部生成一次)
  • 支持纵向表
  • 基础数据类型字段使用默认值填充字段
  • 配置生成压缩
  • 支持国际化翻译
  • 数值类型范围检查
  • 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

使用 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

简单 map

id map1
int map[int]string int string int string
s
配置唯一 id 简单 map
1001 1 aaa 2 bbb

嵌套 map

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

数组 map

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 配置表的命名与组织方式,适用于所有导表相关配置。

一、文件命名规范

Excel 文件命名格式:配置中文名@导出英文名.xlsx

  • 中文名可选。
  • 示例:D-道具@item.xlsxerror.xlsx

二、Sheet 命名规范

可导出的 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 过多,定位与切换更方便。

GUI 版本

alt text