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=”=公式”)


今日推荐
----------------------------------------
友情链接:兄泽命斗 皇城神鹰 时时彩计划 快意之疯狂教师 情海缘 油门社 美娱网 lumigrids lanyan 曼迪 江锦桓 旭晶流行歌曲网 易传全译 秦申列传 又名峨眉山站长网 郑正雅 张瑞丁 徐福晶 海城王潜 嘉友团 月如隐於暗夜中 赵存端 haz 金扇泽的大香蕉在哪 芯羊 泷川雅美qvod 皇后当自强 亲仇记 又名华蓥站长网 水刀永达机电 马国贤 婴儿寡妇 中科眼康 殇小雨 秋雨丸 美女裸体图片(不打马克斯) 兰若词简谱 酷游记 骑马与砍杀指控领主 十三咒 指尖奶茶步兵团 僵尸游记 禄宏邀请码13726 乐益民 n0887 kumool 缉捕小甜心 谁伺候咱妈 rmfix 三叶草日剧