基于openpyxl的excel转换工具。支持xlsx文件转换为erlang,elixir,lua,json,xml,python等配置文件
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

70 linhas
4.6 KiB

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