简介
使用python的openpyxl为Excel中的任何单元格设置数据输入规则。
功能演示
该示例演示如何设置列表类型的输入规则。
import openpyxl as xl
from openpyxl.worksheet.datavalidation import DataValidation
def create_data_validation_list(
wb: xl.Workbook, # 待编辑book(工作簿)
ws_name: str, # 工作表sheet名称
choices: list, # 选择list
add_range: str # 一个单元格
) -> None:
ws = wb[ws_name]
dv = DataValidation(
type="list",
formula1='"{}"'.format(','.join(choices)),
allow_blank=True,
showErrorMessage=True,
errorStyle="warning",
)
dv.add(ws["{}".format(add_range)])
ws.add_data_validation(dv)
上面的函数(create_data_validation_list)是这样使用的:
# 打开book(工作簿)进行编辑
filepath = 'test.xlsx'
wb = xl.load_workbook(filepath)
# 获取book(工作簿)中第一张工作表的名称
ws_name = wb.sheetnames[0]
# 验证规则选择
choices = ['○', '×', '△']
# 将验证规则应用于A1单元格
create_data_validation_list(wb, ws_name, choices, "A1")
# 保存
wb.save('output.xlsx')
当运行上述代码时,数据验证规则将在A1单元格中设置,如下所示:
解释
可以通过实例化 openpyxl.worksheet.datavalidation.DataValidation 类并将其应用(添加)到任何单元格来设置数据验证规则。
这次设置的是序列(list)类型的输入规则,不过Excel还有多种类型的输入规则。
可以使用 DataValidation 类的 type 属性来选择此类型。
每种设置方法请参考官方文档。