Python操作Execl实现三级联动下拉功,去翻阅了官方文档,整理出一个实现联动下拉的demo.
官网文档:【openpyxl官方文档】
一、操作流程
1、定义xlsx文件名称
# -*-coding: utf-8 -*-
import xlsxwriter
# 定义xlsx文件名称
workbook = xlsxwriter.Workbook('defined_test.xlsx')
2、定义sheet (sheet2用于存储级联下拉数据)
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
# sheet2设置成隐藏
worksheet2.hide()
3、定义sheet2的数据
data = ('RootLevel', '工业', '非工业')
data1 = ('工业_test', '工业1', '工业2', '工业3')
data2 = ('工业_工业1_label_name', '工业11', '工业12', '工业13')
data3 = ('工业_工业2_test', '工业21', '工业22', '工业23')
data4 = ('非工业_test', '非工业1', '非工业2', '非工业3')
data5 = ('非工业_非工业1_test', '非工业11', '非工业12', '非工业13')
4、sheet2 写入数据
worksheet2.write_row('A1', data)
worksheet2.write_row('A2', data1)
worksheet2.write_row('A3', data2)
worksheet2.write_row('A4', data3)
worksheet2.write_row('A5', data4)
worksheet2.write_row('A6', data4)
5、定义的名称和命名范围
workbook.define_name('Sheet1!工业_test', '=Sheet2!$B$2:$D$2')
workbook.define_name('Sheet1!工业_工业1_test', '=Sheet2!$B$3:$D$3')
workbook.define_name('Sheet1!工业_工业2_test', '=Sheet2!$B$4:$D$4')
workbook.define_name('Sheet1!非工业_test', '=Sheet2!$B$5:$D$5')
workbook.define_name('Sheet1!非工业_非工业1_test', '=Sheet2!$B$6:$D$6')
6、sheet1中前 100行 增加下拉数据
# 100行 增加下拉数据
for v in range(1, 100):
v = str(v)
worksheet1.data_validation("A"+v, {'validate': 'list',
'value': '=Sheet2!$B$1:$C$1'})
worksheet1.data_validation("B"+v, {'validate': 'list',
'source': '=INDIRECT(CONCATENATE($A'+v+',"__test"))'})
worksheet1.data_validation("C"+v, {'validate': 'list',
'source': '=INDIRECT(CONCATENATE($A'+v+',"__",$B'+v+',"__test"))'})
# D列增加数据校验设置
worksheet1.data_validation('D'+v, {'validate': 'integer',
'criteria': 'between',
'minimum': 1,
'maximum': 100,
'input_title': 'Enter an integer:',
'input_message': 'between 1 and 100'})
7、关闭文件操作
workbook.close()
二、样例展示
1、下拉级联展示
1、数字验证校验展示
如果您对我的文章感兴趣,欢迎关注点赞收藏,如果您有疑惑或发现文中有不对的地方,还请不吝赐教,非常感谢!!