乐于分享
好东西不私藏

Python开发从零开始-50.24-Office 文档处理

Python开发从零开始-50.24-Office 文档处理

接上文Python开发从零开始-50.23-Office 文档处理本文小编与大家分享 Python 处理 Office 文档的相关知识。

2、数据验证

利用 Excel 的数据验证功能,用户可以设置数据输入规则,只有符合规则的数据才会被输入到单元格中,从而起到规范化数据输入的目的。数据验证在 Excel 2013 之前被称为 “数据有效性”。

数据验证的主要功能包括:

    • 限制数据类型与范围‌:仅允许整数、小数、特定日期区间、时间段、文本长度等类型及其取值范围;

    • ‌创建下拉列表‌:创建序列选项,让用户从预设内容中选择,避免手动输入错误;

    • 自定义规则‌:通过公式设置复杂条件,如禁止重复值或限制输入范围;

    • ‌输入引导与错误拦截‌:设置选中单元格时的‌提示消息‌,以及输入违规时的‌出错警告‌(分“停止/警告/信息”三级强度,可强制阻止或仅提示)。

    openpyxl.worksheet.datavalidation.DataValidation 对象用于定义单元格数据验证规则。使用 DataValidation 对象实现单元格数据验证功能,需遵循以下步骤:

    • 创建数据验证对象,并根据业务需求配置相关参数;

    • ‌指定数据验证需要生效的单元格范围;

    • 将数据验证规则添加到工作表‌。

    (1)创建数据验证对象并配置参数

    DataValidation 对象的构造函数原型如下:

    DataValidation(

        type=None, formula1=None, formula2=None,

        showErrorMessage=False, showInputMessage=False,

        showDropDown=False, allowBlank=False, sqref=(),

        promptTitle=None, errorStyle=None, error=None,

        prompt=None, errorTitle=None, imeMode=None,

        operator=None, allow_blank=None)

    参数解释(部分):

    • type:字符串,验证数据类型,合法取值必须是以下字符串:

      • 'whole':整数;

      • 'decimal':浮点数(小数);

      • 'list':序列(下拉列表)

      • 'time':时间;

      • 'date':日期;

      • 'textLength':文本长度;

      • 'custom':自定义(公式)。

    • formula1:字符串,验证条件的第一个值,配合 type 参数设置不同格式值:

      • 当 type 参数为 'list' 时,静态列表传入逗号分隔的字符串(必须使用双引号,如 '"男, 女, 未知"'),动态引用使用单元格引用标识;

      • 当 type 参数为 'custom' 时,传入公式字符串;

      • 当 type 参数为其他类型时,传入对应值;

    • formula2:字符串,验证条件的第二个值,仅在 operator 参数设置为区间比较('between' 或 'notBetween')时使用;

    • operator:字符串,配合 type 参数使用,定义数值或长度的比较逻辑,合法取值必须是以下字符串:

        • 'between':介于 formula1和 formula2 参数值之间;

        • 'notBetween':不介于 formula1 和 formula2 参数值之间;

        • 'lessThan':小于;

        • 'greaterThan':大于;

        • 'equal': 等于;

        • 'notEqual' :不等于;

        • 'lessThanOrEqual':小于或等于;

        • 'greaterThanOrEqual':大于或等于。

      • showErrorMessage:布尔型,输入无效数据时是否弹出错误警告,设为 True 表示弹出警告;

      • showInputMessage:布尔型,选中单元格时是否显示输入提示,设为 True 表示显示提示;

      • showDropDown:布尔型,是否显示下拉列表,设为 True 表示显示列表。

      • allow_blank:布尔型,是否允许单元格留空,设为 False,用户必须输入符合规则的内容;

      • sqref:字符串,应用该验证规则的单元格区域引用,如 "A1:A10"。可在创建对象时设置,也可在对象创建后指定。

      DataValidation 对象创建代码片段示例如下:

      from openpyxl.worksheet.datavalidation import DataValidation# 创建下拉菜单dv_list = DataValidation(    type="list",    formula1='"男, 女, 未知"',  # 注意:静态列表需用双引号包裹    allow_blank=True,    showErrorMessage=True,    errorTitle="输入错误",    error="请从下拉列表中选择性别")

      (2)指定数据验证需要生效的单元格范围

      # 指定数据验证应用单元格dv_list.sqref = "A2"

      (3)将数据验证规则添加到工作表‌

      可以使用 DataValidation 对象的 add_data_validation() 方法数据验证规则添加到工作表‌。代码片段示例如下:

      # 必须执行此步骤,否则验证规则不会生效ws.add_data_validation(dv_list)

      (4)数据验证完整代码

      from openpyxl import Workbookfrom openpyxl.worksheet.datavalidation import DataValidationwb = Workbook()ws = wb.active# 创建下拉菜单dv_list = DataValidation(    type="list",    # 注意:静态列表需用双引号包裹    formula1='"男, 女, 未知"',      allow_blank=True,    showErrorMessage=True,    errorTitle="输入错误",    error="请从下拉列表中选择性别")# 指定数据验证应用单元格dv_list.sqref = "A2"ws['A1'].value = "性别"# 必须执行此步,否则规则不会生效ws.add_data_validation(dv_list)wb.save("excel_validation1.xlsx")

      代码执行后,生成 excel_validation1.xlsx 文档,文档提供数据验证下拉列表(注意:需点击 A2 单元格出现)。效果示例如下图:

      如果在数据验证应用单元格内输入不合规数据,将会提示错误。

      本文仅介绍了 DataValidation 对象最简单示例,大家可以参考官网文档和网络教程熟悉和了解其复杂使用。

      受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件‌的相关知识。