Python操作Excel学习笔记(31):数据有效性

更新日期:2019-03-22
完美Excel

学习Excel技术,关注微信公众号:

excelperfect

 

Excel的“数据有效性”功能,在Excel 2010及以上版本中又称作“数据验证”,是一项非常方便实用且强大的功能,有兴趣深入了解的朋友可以参考《Excel技术 | 带你玩转数据有效性》。

 

数据有效性可以应用于单元格区域,且单元格区域可以是非连续区域,例如单元格区域“A1,B2:B5”包含单元格A1和单元格区域B2:B5

 

使用PythonExcel工作表中添加数据有效性的基本代码如下:

from openpyxl import Workbook

from openpyxl.worksheet.datavalidation import DataValidation

 

# 创建要操作的工作簿和工作表

wb= Workbook()

ws= wb.active

 

# 创建序列有效性的数据有效性对象

dv= DataValidation(type="list",formula1=""苹果,香蕉,脐橙"",allow_blank=True)

 

# 设置自定义错误消息,可选

dv.error= "在列表中没有你输入的条目"

dv.errorTitle= "无效的输入"

 

# 设置自定义提示消息,可选

dv.prompt= "请从列表中选择"

dv.promptTitle= "列表选取"

 

# 在工作表中添加数据有效性对象

ws.add_data_validation(dv)

 

# 在工作表单元格区域中添加数据有效性

dv.add("A1:A5")

 

# 保存工作簿

wb.save("dv.xlsx")

 

运行后的效果如下图1所示。

1

 

也可以选创建一些单元格,然后将其添加到数据有效性对象中,如下代码所示:

from openpyxl import Workbook

from openpyxl.worksheet.datavalidation import DataValidation

 

# 创建要操作的工作簿和工作表

wb= Workbook()

ws= wb.active

 

# 创建序列有效性的数据有效性对象

dv= DataValidation(type="list",formula1=""苹果,香蕉,脐橙"",allow_blank=True)

 

# 设置自定义错误消息,可选

dv.error= "在列表中没有你输入的条目"

dv.errorTitle= "无效的输入"

 

# 设置自定义提示消息,可选

dv.prompt= "请从列表中选择"

dv.promptTitle= "列表选取"

 

# 在工作表中添加数据有效性对象

ws.add_data_validation(dv)

 

# 在工作表单元格区域中添加数据有效性

cell1= ws["B2"]

dv.add(cell1)

 

# 保存工作簿

wb.save("dv.xlsx")

 

运行后的效果如下图2所示。

2

 

如果单元格中的值不在数据有效性序列值中,运行时会出错:

cell2= ws["C3"]

c3.value= "无效值"

dv.add(cell2)

 

可用下列代码判断单元格中是否设置了数据有效性:

“B2”in dv

 

下面是一些设置数据有效性的代码示例:

1.允许任何整数:

dv= DataValidation(type=”whole”)

 

2.允许任何大于100的整数:

dv= DataValidation(type=”whole”, operator=”greaterThan”, formula=100)

 

3.允许任何小数:

dv= DataValidation(type=”decimal”)

 

4.允许任何01之间的小数:

dv= DataValidation(type=”decimal”, operator=”between”, formula1=0, formula2=1)

 

5.允许日期:

dv= DataValidation(type=”date”)

 

6.允许时间:

dv= DataValidation(type=”time”)

 

7.允许最多15个字符的字符串:

dv= DataValidation(type=”textLength”, operator=”lessThanOrEqual”, formula1=15)

 

8.单元格区域数据有效性:

fromopenpyxl.utils import quote_sheetname

dv= DataValidation(type=”list”, formula1=”{0}!$B$1:$B$10”.format(quote_sheetname(sheetname))

 

9.自定义规则:

dv= DataValidation(type=”custom”, formula1=”=公式”)


今日推荐
----------------------------------------
友情链接:十三号摄影棚 葬心公子白 米哈辛格 惜别的海岸简谱 ourfishbox 乐倍肤 仁慈束带 现代茅山道士传奇 芝元玫瑰精油软胶囊 mp3 重生全能酷女神 曙色萌动的意思 卡加尼舒 于克儒 京极幼子 李世汉 嫉妒的密码国语版 七仔网 狠狠哭伴奏 五味嫔 绝不放过你粤语 皇后当自强 夜访派瑞丝 佣兵天下后传再创世 梁子祁 mds688 姜有田 库洛纳斯 拟厦鸟 若雨纷飞 秦明河 惊世猛兽 锵锵三人行 七个侍寝夜结局 张槐乾 掌心龙 侍从官之肩在哪 善恶图文本 嗨淘屋 刘命信 赞沃卡 姚毅诚 石斛根腐病 森本雷欧 异界都市之神游 无忧技术组yy69007 剑网3盗兵符 凶冥酒店 邹平程作通 林美贞透明泳装