# exporter **Repository Path**: SimanX/exporter ## Basic Information - **Project Name**: exporter - **Description**: 导表工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-26 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # exporter exporter 是一个用 python3 实现的将 excel 表(只处理 .xlsx)转换为对应语言配置的工具。它以命令行方式提供,目前支持的语言包括 1. Lua 2. Json 3. JavaScript 4. TypeScript 5. ...(后续添加) ## 依赖 exporter 依赖 [pandas](https://github.com/pandas-dev/pandas),你可以使用 pip 安装它 ```shell pip install pandas ``` ## 使用 ```shell python3 export_config.py [options] ${source_dir} ${target_dir} ``` ### 参数 ```shell --lang=${lang} # 导出语言,目前支持 lua,json,js,ts --target=${target} # 导出目标,client/server, -c # 导出客户端,等价于 --target=client -s # 导出服务端,等价于 --target=server -f|--force # 强制导出,默认没有更新的文件不会重复导出 --suffix=${suffix} # 文件名字的后缀(不是后缀名,如excel表格为a.xlsx,suffix=Config,则导出文件名是aConfig.lua) --prefix=${prefix} # 文件名字的前缀(同上,可以使用prefix=config/来把导出的文件放入一个新文件夹 config/ 中) ${source_dir} # 源文件目录 ${target_dir} # 目标文件目录 ``` **source_dir, target_dir, lang 和导出目标都是必填参数** ## 约定 ### 文件名 excel 表格名格式为 [file_attr]-{file_name},其中 file_attr 为文件属性,目前支持属性 c,s,表格默认对于客户端和服务器都进行导出,但是如果一个文件命名为 's-goods.xlsx',则这个文件不会被调出到客户端,你不应该将文件的命名中包含符号 '-' ### 表格格式 表格名称同文件名一样,可以使用 '-' 来分割获取到文件属性,c,s 有一样的效果 excel文件中的表格,前4行为表头,其中: 1. 第一行是数据字段的描述名称 2. 第二行是数据字段的类型,支持的类型为, int, float, string, bool, object, array 3. 第三行是数据字段的属性,目前支持的属性为 1. k: 主键,可以使用 k1 来表示第一层 key,k2 来表示第二层,... 2. c: 字段只导出到客户端,默认为都导出 3. s: 字段只导出到服务端,默认为都导出 4. 第四行是数据字段名(只能是字母, 数字, 下划线, 不能有空格, 不能有特殊字符, 不能有中文) 从第五行开始,为配置数据,所有数据列的值都应符合 json 格式,其中 array 类型应该忽略最外层的 '[]',object 类型应该忽略最外层的 '{}',exporter 会在解析时增加这层括号并正确解析。 1. 所有需要导出的行都必须设置主键列的值,否则 exporter 不会对该行进行导出 2. 所有可选列的值如果为空,则 exporter 会忽略该列,在导出时,python 字典中不会有该 key 3. python 中会对对应行的数据列进行类型转换,其中所有的数据 ## 添加新语言支持 1. 在 exporter 中创建对应语言的 Exporter.py 文件,实现 Exporter 类,实现其抽象方法 write_output, file_ext, 具体可查看已实现的 Exporter 2. 在 ExporterFactory 中添加对应语言的导出