Skip to content

Latest commit

 

History

History
88 lines (77 loc) · 6.31 KB

xlsx.org

File metadata and controls

88 lines (77 loc) · 6.31 KB

xlsx 格式

xlsx文档格式约定

sheet格式

要导出的sheet,只能以英文命名,不能有*汉字*,以后缀名区分不同表格类型.

_cfgs 结尾 - 多行数据表

前4行固定配置项,第5行开始是数据内容,会忽略空行. 用于生成结构体数组或者map.

  • 第一行 注释信息
  • 第二行 字段名称 sheet内不允许重名 只能写英文,以 # 开头,忽略本列
  • 第三行 字段类型 具体支持看下面文档
  • 第四行 数据约束 仅对当前列的数据进行约束,详细说明看下面文档.

_st 结尾 - 单条数据表

单个配置,只有一条配置的.用于 全局配置等. 用于生成单个结构体

单条数据表,是多行数据表的转置.

只读取前5列,后面的列都会忽略.

_lua 结尾 - lua检测脚本表

只读取2列. 第一列 标签. 第二列 lua脚本. 会忽略空行.

使用 --verify-script-path 命令行参数指定独立存放lua检测脚本的目录(方便修改).

字段类型

基础类型

类型字节(Byte)数值范围最小值最大值proto 对应
int81-2^4 ~ 2^4-1-128127int32
int162-2^15 ~ 2^15-1-32,76832,767int32
int324-2^31 ~ 2^31-1-2,147,483,6482,147,483,647int32
int648-2^63 ~ 2^63-1-9,223,372,036,854,775,8089,223,372,036,854,775,807int64
uint810 ~ 2^8-10255uint32
uint1620-2^16-1065535uint32
uint3240-2^16-104,294,967,295uint32
uint6480 ~ 2^64-1018,446,744,073,709,551,615uint64
float324-3.4E-38~3.4E+38-3.4E-383.4E+38float
float6481.7E-308~1.7E+3081.7E-3081.7E+308double
bool1,0,true,falsebool
string

为了提供方便及缩减数据大小,提供以下别名

  • int 等同 int32
  • uint32 等同 uint32
  • float 等同 float32

容器类型

数组类型

数组类型以 array<基础类型> 定义. 数据以 ; 分隔.

例:

“1;3;4;”

字典类型

字典类型以 map<key类型,value类型> 定义. 其中key类型为 不包含float32,float64 的基础类型. value可以是所有基础类型.

多个k/v对用 ; 分隔. k/v 使用 : 分隔.

例:

“1:3;3:32”

字段数据约束

字段约束是对本列数据的检测.多个约束之间用 ; 分隔

数值类型检测

以下函数支持 所有数值类型,数组元素为数据类型的,map的value是数值类型的.

函数含义
values(n1,n2,..)数值必须是values定义的其中一个
range(min,max)数值必须在min,max中间
min(n)数值必须小于n
max(n)数值必须大于n

容器类型检测

size 支持数组及map类型

函数含义
size(min,max)数据个数必须在min,max中间,如果只填1个数值,数据个数必须匹配此数值

map类型特定函数

针对map的key数值检测. 待开发

检测脚本

所有sheet表,支持 “函数”

函数含义返回值
sheet表名.字段名.range(function (data,rowID) end)遍历该表某个字段列的所有数值,data是string类型 表格的原始数据无返回值
sheet表名.字段名.find(data)在该表中的某个字段下查找data数据,需要string类型的参数bool 是否查找到了对应的数据
sheet表名.字段名.get(n)返回该表中的某个字段第n行的数据string类型
sheet表名.range(字段1,字段2,…,function (字段1数据,字段2数据,..,rowID) end)遍历该表多个字段列的所有数值,range传递几个字段,函数前几个字段就是表格的原始数据无返回值
sheet表名.get(n,字段1,字段2,…)返回该表中的某个字段第n行的数据string类型,参数传递几个字段,返回值就有几个.行无效返回nil
split(data, seq1[, seq2])拆分数据,拆成1维或者2维数组1维或者2维数组
failed(tip1,…)标记出错,输出错误日志无返回值

生成模板