xresloader文档
xresloader 是一组用于把Excel数据结构化并导出为程序可读的数据文件的导表工具集。它包含了一系列跨平台的工具、协议描述和数据读取代码。
主要功能特点:
跨平台(java 11 or upper)
Excel => protobuf/msgpack/lua/javascript/json/xml
完整支持协议结构,包括嵌套结构和数组嵌套
同时支持protobuf proto v2 和 proto v3
支持导出proto枚举值到lua/javascript代码和json/xml数据
支持导出proto描述信息值到lua/javascript代码和json/xml数据(支持自定义插件,方便用户根据proto描述自定义反射功能)
支持导出 UnrealEngine 支持的json或csv格式,支持自动生成和导出 UnrealEngine 的
DataTable
加载代码支持别名表,用于给数据内容使用一个易读的名字
支持验证器,可以在数据里直接填写proto字段名或枚举名,或者验证填入数据的是否有效
支持通过protobuf协议插件控制部分输出
支持自动合表,把多个Excel数据表合并成一个输出文件
支持公式
支持oneof,支持plain模式输入字符串转为数组或复杂结构,支持map
支持空数据压缩(裁剪)或保留定长数组
支持基于正则表达式分词的字段名映射转换规则
支持设置数据版本号
Lua输出支持全局导出或导出为
require
模块或导出为module
模块。Javascript输出支持全局导出或导出为
nodejs
模块或导出为AMD
模块。提供CLI批量转换工具(支持python 2.7/python 3 @ Windows、macOS、Linux)
提供GUI批量转换工具(支持Windows、macOS、Linux)
CLI/GUI批量转换工具支持include来实现配置复用
构建环境 |
构建状态 |
---|---|
直接下载发布包即可,无需构建打包 |
|
读表代码生成工具,直接下载即可,无需构建打包 |
|
文档 |
v2.11.0-rc2及以前版本更新迁移指引
由于 v2.11.0-rc3 版本变更了默认的索引器,导致对Excel一些内置的数据类型处理和先前有一些差异。比如对于日期时间类型、百分率等。
现在会先转出原始的文本,再根据protocol的目标类型做转换。如果需要回退到老的POI索引,可以使用 --enable-excel-formular
选项切换到老的索引器。
新版本开始使用JDK 11打包,如果仍然需要 JDK1.8打包请自行下载源码并修改 pom.xml
内 maven-compiler-plugin
的 source
和 target
后使用 mvn package
命令打包。
xresloader 主要文档分为以下几个模块:
- 下载工具集
- 快速上手
- 转表引擎-xresloader
- 协议->Excel数据映射和支持的配置读取源 (scheme)
- 数据输出和数据加载
- 批量转表工具
- 数据类型说明
- 使用 xres-code-generator 生成解析代码
- 高级功能
- 文本替换(别名/宏)
- 多表数据合并
- 数据验证器
- Protobuf 插件支持
- 仅导出部分字段
- 批量转表的include标签
- 公式支持
- 定长数组
- Plain模式(需要 xresloader 2.7.0及以上)
- Oneof/Union支持(需要 xresloader 2.8.0及以上)
- Map类型支持(需要 xresloader 2.9.0及以上)
- 使用
CallbackScript
处理数据(需要 xresloader 2.13.0及以上) - 多字段复制(需要 xresloader 2.14.0-rc1及以上)
- 剔除Excel误操作带来的空数据行(需要 xresloader 2.14.0-rc2及以上)
- 唯一性检测(需要 xresloader 2.14.0-rc2及以上)
- 通过自定义验证器在复用验证器规则组合(需要 xresloader 2.14.0-rc3及以上)
- 生态和周边工具
- FAQ
- 哪里有完整的示例?
- 为什么会读到很多空数据?
- 为什么Excel里填的时间,但是转出来是一个负数?
- Windows下控制台里执行执行会报文件编码错误?(java.nio.charset.UnsupportedCharsetException: cp65001)
- C++加载代码编译时出现xresloader符号重定义(multiple definition of
org::xresloader::pb::xresloader_XXX)
- C++加载代码编译时出现xresloader版本检查错误
- proto v2版本API解析repeated的整数或浮点数类型字段失败(Wire Type)
- 为什么在proto里定义的是一个无符号(unsigned)类型(uint32、uint64等),实际输出的UE代码是有符号(signed)的(int32/int64)?
- 为什么
UE-Csv
和UE-Json
输出的代码会多一个Name
字段? - 要如何配置可以让Excel里的数据指向UE的类型或资源
- 为什么UE的代码输出里对
oneof
的case输出使用FString
的字段名而不使用UEnum()
- 提示
Can not reserve enough space for XXX objecct heap