# py_exceltools python3 基于openpyxl的excel转换工具。支持xlsx文件转换为erlang,elixir,lua,json,xml,python等配置文件。 关于openpyxl库:https://pypi.python.org/pypi/openpyxl。 ## python(推荐3.5-3.7 因为目前pyinstaller支持这些版本)和openpyxl安装 ### linux安装 apt-get install python-pip pip install openpyxl ### win安装 安装python(同时安装pip并添加到Path) 安装openpyxl, 在安装python后在cmd中运行: pip install openpyxl ## 使用 lancher.bat(win)和lancher.sh(linux)为对应运行脚本。 当前配置了用于参考的参数来转换example.xlsx, 可在对应server、client输出文件夹查看生成配置效果。 参数: --input :需要转换的excel文件所在目录 --srv : 服务端配置文件输出目录 --clt : 客户端配置文件输出目录 --timeout : 需要转换的excel文件最后更新时间距当前时间秒数。-1转换所有 --suffix :excel文件后缀,通常为.xlsx --swriter : 服务端配置文件转换器,可以指定为: erlanghrl,erlangerl,elixir,lua,jsonarray,jsonobject,xml,python --cwriter : 客户端配置文件转换器,可以指定为: erlanghrl,erlangerl,elixir,lua,jsonarray,jsonobject,xml,python 注:对于client和server,如果未配置输出目录或转换器,则不会导出。 ## 数据类型 支持int(int64), number(float), string, tuple, list, dict, json、lua 其中tuple, list, dict 为 python原生数据结构 json 为json数据类型 Lua为 lua table ## 数据格式示范(可以参考本工具自带的示例配置表) int 整数 1,2,1000 64位 number 整数或者小数都OK string 字符串 excel表中配置时不需要额外加双引号 tuple (元素, 元素, ...) 元素可以为 int number string tuple list dict list [元素, 元素, ...] 元素可以为 int number string tuple list dict dict [key:value, key:value, ...] key可以为 int number string tuple value可以为 int number string tuple list dict 特别注意该类型的使用 因为在一些语言中 对应dict类似的类型的key不支持 int 比如 jsonarray和xml,如果在转成jsonarray和xml时key不能配置为int和number json {key:value, key:value, ...}该类型为json的对象类型 Key为字符串, Value可以为任意Json数据类型即可以是对象,数字,基本数据类型。 lua 该类型为lua的table类型 其中 list dict json 三种数据格式可以互相嵌套 转换时会将这些数据类型转换为其他语言支持的数据类型,另外注意点是一些其他语言的一些限制 比如 json不能用数字做为对象的Key(), xml的也不能用数字作为标签, 在配置的时候需要注意 而且导出xml和jsonjsonarray都是用的库,出错的时候不太好找到对应配置错误的数据,需要配置前 就额外注意,以免不必要的懵逼和浪费时间,策划不太明白的可以请教程序或者百度 ## 打包exe 部署时,可以将python打包成exe。建议使用pyinstaller。 pip install pyinstaller pyinstaller -F -c genCfgs.py ## 关于文件命名 ### excel文件名命名格式 为了表名的可视化和可理解性,文件命名支持 MMM-NNN.xlsx的方式。MMM可以是任意字符(一般为文件中文名,但是不用下划线结尾), 作为文件名的注释性描述。NNN只能是数字,字母和下划线(不能以下划线开头和数字开头),作为导出的配置以NNN做为表名前缀 ### excel sheet命名格式 为了考虑策划会使用一个excel配置同一的功能的多个配置子表,且方便导出和查看,sheet命名为YYY-XXX或者 YYY+XXX, 或者YYY (里面不包含 "+"""-"), YYY可以为任意字符(一般为中文描述),XXX为导出配置的表名后缀, 当sheet命名为 YYY-XXX或者 YYY+XXX时 导出文件名为: NNN_XXX.lang(此种命名一般用于 一个excel配置多个需要导出的sheet页签) 当sheet命名为 YYY 时 导出文件名为: NNN.lang (此种命名用法仅仅用于一个excel只配置一个需要导出的sheet页签) lang为目标语言的后缀名 具体示例: A_arrary表示例--cfg_array.xlsx 前缀Y可以用方便排序显示 更多具体参见配置excel示例 ## 注意 * 在string中无法直接使用换行等特殊称号。请用\n等转义字符替代。 * 由于xml并不存在数组等结构,不建议使用。 * 工具会检测server和client标识。如果不存在,则不导出些表。方便策划做备注