目录

策划EXCEL工具-xlsx2py

概述:

策划EXCEL工具就是帮助策划人员把Excel文件输出成服务端使用的py文件和客户端使用的json文件的工具。模块名为xlsx2py,是一个基于Python写的一整套工具,其中包括从Excel生成python文件、从Excel生成json文件两个功能。同时,附带一个rpgdemo,该文件夹中包含:针对不同excel文件的批处理文件以及默认设置的文件夹结构。

工具位于:kbe/tools/xlsx2py文件夹下。

1

rpgdemo : 是一个使用的例子;
xlsx2py : 核心模块脚本存放的文件夹;
tool_installation.log : 工具安装手册;
tool_rules.log : 工具使用规范。


安装:

一般的,该工具的使用者是在Windows下的,所以这里只介绍了Windows下的安装。

1:Python环境

首先,必须要有Python环境,见《脚本开发环境》一文。这里不再赘述。

2:pywin32-xxx-py3.x

这是Python对windows的扩展包,可以使Python操作win32的程序,访问windows系统API的库,xlsx2py是需要操作这些库的。

下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/

注意:如果你的Python是64位,则需要对应的64位pywin32,如果两者不统一,会运行失败!

3:office2010及以上的安装

我们需要调用Excel相关的API,请确保office正确安装。具体请见Microsoft官网,自行进行下载和安装。

Office官网:https://products.office.com/

使用rpgdemo进行验证:

1

rpgdemo中定义了一些默认的文件夹和输出的规范,新手可以参考着进行自己的xlsx导出。等对这个工具熟悉后,大可以自行调整。

1:pydatas文件夹是数据输出的py文件放置地。

2:xlsxs文件夹是放置excel文件的。

3:bat批处理是对Python调用的一些快捷设置,包括调用的模块路径、excel文件路径等设置。
我们使用编辑工具打开一个entities.bat,如下:

call basePath.bat
@echo off
set pydatas=%ktpydatas%/d_entities.py
set excel=%ktexcels%/xlsxs/entities.xlsx
echo on
python ../xlsx2py/xlsx2py.py %pydatas% %excel%
if not defined ktall (ping -n 30 127.1>nul)

该批处理脚本会先call当前目录下的basePath.bat,并设置pydatas的输出路径和excel的excel文件路径。之后调用模块xlsx2py,完成。

我们来看一下basePath.bat里的内容:

@echo off
title=kttools::ktexcel
mode con cols=100 lines=46
color 2
set ktexcels=.
set ktpydatas=pydatas
set haskt=1
echo Input directory:[%ktexcels%]
echo Output directory:[%ktpydatas%]
echo on

这个basePath.bat是对基本路径进行设置用的,包括把ktpydatas设置为pydatas目录地址(即为我们之前提到的文件夹pydatas)以及把ktexcels设置为当前目录。

4:执行
直接双击需要输出的excel对应的批处理脚本即可,如我们例子中的entities.bat。执行结果会在pydatas文件夹下生成d_entities.pyd_entities.py.datas.json两个文件。其中,py文件可以放入服务端开发的data目录下,给脚本直接调用并使用;json文件可以放入客户端,提供给客户端进行使用。

同样的,其他批处理文件如avatar_init.bat就是对avatar_init.xlsx文件的输出配置,其他类似。

Excel内的规则:

定义:

先定义一些名词:

  • 代对表:excel文件中的表的名字为”代对表=”的表
  • 导出表:excel文件中表的名字以”@”为前缀的表的集合
  • 数值:excel中数据的值
  • 变量(名):针对程序而言,这个请不要是用中文,Python无法使用中文变量名

导出表:

标识:

一个excel上会存在多份表, 不一定每张表都是需要导出的, 因此需要这样一个命令标识此表需要导出:

  • 在表名前面加前缀 “@”。例如:”@普通任务表”
  • 该表导出为变量名请在代对表中定义
  • 导出表的表名需要在代对表中进行代对填写,格式为: 表名(不含@):变量名(只能为英文) 例如: 普通任务表:normalQuest

表中内容的要求:

1:第一行是程序用的属性标签的定义,还包括一些导出规则。格式如下:

line1: "ID [.][func]"  |	"name [][func]"
line2: "技能ID"			|	"技能名称"

其中,ID是属性名,在导出的文件中会以它作为属性名。第一个[],是导出规则的设置。第二个[]是所使用的转换函数名,这些函数定义在\xlsx2py\functions.py中,可以让大家写自己需要的转换方式。如:

def func_int(data):
	return int(data)

def func_xxx(data):
	x, y = data.split(";")
	return (x, y)

2:第二行是策划用的真正的表头, 说明此列数据的用途。
3:第三行开始就是数据行,请添加与func匹配的数据类型。

导出规则定义:

1:命令符号-点.
代表此项必须填写,如检查到没有填写则报错,并退出导出。如果没有定义则随便填不填写,导出到py会给个默认值(具体看这列所定义的数据类别)。

2:命令符号$
表示此列数据导出后是需要从对代表中进行数据替代的, 这样就可以让策划用中文填写配置了。代对表请见下面介绍–《代对表

3:命令符号-感叹号!
表示该列数据为所在行的主key,现在主key只能是1个,如需多个key请在\xlsx2py\config.py配置EXPORT_KEY_NUMS

注意:请使用英文的符号,程序未做中文的处理!!

代对表:

代对表第一行为说明,第二行以后为代对关系。代对表每个单元格格式如(物理技能 :BASE_SKILL_TYPE_PHYSICS),如图:

1

导出数据的格式:

如:某Excel文件有导出表(@表1, @表2, …)。代对表中有代对关系:表1:sheet1,表2:sheet2。

则导出的py文件中存在字典:

sheet1 = {
	key: {...}, 
	....
}

sheet2 = {
	key: {...}, 
	....
}
...

datas = [sheet1, sheet2, ...]

比如,刚才例子中d_entities.py中如下:

datas={
	10001001: {'entityType': 'NPC', 'id': 10001001, 'etype': 1, 'name': '新手接待员', 'modelID': 10001001, 'moveSpeed': 50, 'runSpeed': 65, 'dialogID': 10001001}, 
	10002001: {'entityType': 'NPC', 'id': 10002001, 'etype': 1, 'name': '传送员', 'modelID': 10001001, 'moveSpeed': 50, 'runSpeed': 65, 'dialogID': 10001001}}

allDatas = {
	'NPC表':datas,
}

注意:

与程序相关的变量名请使用英文!


Copyright © 2018 Yolo Technologies. Publication: 2.0-025. Built: 2018-12-07.