28 worksheet.add_write_handler()

优质
小牛编辑
121浏览
2023-12-01

add_write_handler(user_type, user_function)write()方法添加一个回调函数用来处理用户定义的数据类型。

  • 参数:
    • user_type (type) – 要匹配的类型。
    • user_function (types.FunctionType) – 用于写入类型数据的用户定义函数。

就像上一节所说的,write()方法将基本的Python数据类型映射为Excel的数据类型。如果要在write()方法添加不受支持的数据类型,那么可以使用add_write_handler()方法来扩展它。

例如,你想让write()方法自动将uuid作为字符串来写入,那么你可以创建一个接受uuid作为参数,并将其转换为字符串,然后使用write_string()写入的函数:

def write_uuid(worksheet, row, col, uuid, format=None):
    string_uuid = str(uuid)
    return worksheet.write_string(row, col, string_uuid, format)

然后,你就可以添加一个与uuid类型匹配的处理程序,并调用刚刚定义的函数:

worksheet.add_write_handler(uuid.UUID, write_uuid)

然后,你就可以直接使用write()方法直接写入,而不用进行数据类型的修改了:

my_uuid = uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')

# Write the UUID. This would raise a TypeError without the handler.
worksheet.write('A1', my_uuid)

可以使用add_write_handler()方法添加多个回调函数,但是每个数据类型只允许有一个回调操作:

worksheet.add_write_handler(int,   test_number_range)
worksheet.add_write_handler(float, test_number_range)

有关此方法的更多信息,可以查看后续的文档。