表格添加方法

May 11, 2017 · View on GitHub

导表工具支持两种导表方式,直接模式(Direct)和配置模式(Config)。需要根据自己项目的情况,选择合适的模式。

空白行或者列都是有效数据分割符,位于空白列右侧或空白行下侧,都会被导表工具忽略,因此可以存放注释或临时数据。

1.直接模式

直接模式下,程序使用的字段名(field)和字段类型,都由表头提供。

Excel行描述
1表格属性。可以描述表格版本,键值是否唯一,表格描述等参数。
2预留。可以通过修改配置参数SHEET_ROW_INDEX,来移除改行。
3表头文字描述。建议保持唯一
4程序使用的字段名。必须唯一
5字段的类型。目前支持:int, long, float, boolean, String。复杂类型都会转成String类型。
6从该行开始,都是数据。

数据的第一列为表格的键值(key),key可以不唯一,但必须要在表格属性中指定。

表格属性

Excel表的第一行为表格属性。每两列为一组,每组第一列为描述,第二列为数值。

ABCDEF
版本:100键值是否重复:1说明:这是一张测试表

如果要添加额外的表格属性,可以修改配置文件的ARGUMENT_CONVERTER

2.配置模式

配置模式下,程序使用的字段名和字段类型,都由脚本提供。表头只需要提供一行中文表头。

表格结构

描述
1表格属性。
2表头文字描述。
3从该行开始,都是数据

配置模式下,key不必是第一列,可以在脚本中指定。同样,重复key也需要在脚本中指定。

添加转换器脚本

converter目录下添加python转换器脚本。详细写法,可参考sample2/converters/converter/example.py。基本内容如下:

KEY_NAME = "ID"
CONFIG = (
    ("编号", "ID", int),
    ("名称", "name", str),
    ("描述", "describe", str, True),
    ("品质", "quality", int, True, 0),
)

CONFIG是一个数组,描述了如何将excel表头转换成程序用的字段。

数组索引描述
0Excel表头文字
1程序使用的字段名
2转换函数。将excel表中的单元格数据转换成指定类型。
3表示此列是否可缺省,即是否可不填。不指定表示为必填,如果漏填,导表工具会有错误提示。
4缺省值。脚本中使用此值替代excel中没有填的位置,如果没有指定缺省值,脚本中就不会出现该单元格的数据。

转换器脚本除了能够转换数据类型,还可以对数据做深度处理。在转换器中添加上回调函数,导表工具会自动调用。

  1. 后处理回调
    导表工具将数据表作为参数传递进来,脚本可以直接修改数据结构。或者基于数据表生成其他辅助表,并返回。
def post_process(data_module):
    # 这里可以修改data_module.main_sheet数据

    # 构造新的子表
    another_sheets = {
        "sheet2" : {"key" : 123},
        "sheet3" : [1,2,3],
    }
    return  another_sheets
  1. 数据检查回调
    导表工具将整个数据模块作为参数传递进来,脚本可以检查数据是否合法。如果不合法,向外抛出异常即可。导表工具会捕获异常并报告错误。
def post_check(data_module, exporter):
    pass

注册转换器脚本

转换器写完之后,需要与Excel表建立对应关系。在配置文件中修改CONVENTION_TABLE,添加上Excel表路径与转换器的对应关系。

CONVENTION_TABLE = (
    ("example.xlsx", "example", ),
)

根据转换器参数自动生成Excel表头

配置模式下,可以根据转换器参数,自动生成Excel表的表头。

python main.py --gen-header your_configure_file