带音乐网站模板/sem运营

带音乐网站模板,sem运营,wordpress怎么调用一个分类的文章,撰写网站建设策划书范文1 主要目的 在Excel中,经常会遇到需要制作多级联动下拉菜单的情况,要求单元格内填写的内容只能从指定的多个选项中进行选择,并且需要设置多级目录,其中下级目录的选项内容要根据上级目录的填写内容确定,如下图所示&am…

1 主要目的

在Excel中,经常会遇到需要制作多级联动下拉菜单的情况,要求单元格内填写的内容只能从指定的多个选项中进行选择,并且需要设置多级目录,其中下级目录的选项内容要根据上级目录的填写内容确定,如下图所示:

 

上图中的数据区域均要求通过下拉菜单实现。其中A列要通过下拉菜单选择省份信息,B列要根据相应的省份信息,通过下拉菜单选择相应的地市信息。

之前的博客已经讲过多级联动下拉菜单在Excel中的设置步骤。但考虑到数据量较大的情况,手动在Excel文件中进行设置的工作量较大,本文通过Python中的openpyxl模块实现多级联动下拉菜单的自动化设置。

2 基本原理

2.1 Excel中多级联动下拉菜单设置的主要步骤

Excel中的下拉菜单主要通过名称管理器以及数据验证界面进行设置。

名称管理器的界面如下图所示。其中“名称”栏记录各选项集的名称,“数值”栏记录各选项集中的所有选项,“引用位置”栏记录选项集中各选项在Excel文件中所在的单元格。

数据验证界面如下图所示。其中“来源”栏可通过indirect函数与名称管理器中的选项集名称进行关联,以此来设置该单元格的选项范围为该选项集中的选项;也可通过indirect函数关联上一级目录对应的单位格位置,以设置本单元格的选项应根据上一级单元格的内容来确定,实现多级联动下拉菜单设置。

 

 

2.2 使用openpyxl完成自动化设置的主要思路 

由于Excel中的名称管理器以及数据验证相关设置均可由openpyxl模块完成,可以通过该模块对相关数据进行处理,并完成对Excel文件的相关设置,以实现多级联动下拉菜单设置的自动化。主要包括三个关键步骤:

(1)将各选项集的信息写入Excel文件。通过openpyxl模块的相关操作,将各选项集信息写入Excel文件中指定的页面。

(2)将各选项集的信息加载至名称管理器。由于openpyxl.workbook.defined_name模块中的DefinedName函数可以进行Excel名称管理器相关设置,可以将各选项集信息加载至名称管理器。

(3)进行数据验证相关内容设置。由于openpyxl.worksheet.datavalidation模块中的DataValidation函数可以对数据验证相关内容进行设置,可以通过该方法完成下拉菜单的制作。

3 选项数据准备

由于Excel中的多级联动下拉菜单选项通常需要通过名称管理器进行关联,为了便于将数据选项写入Excel中的名称管理器,在Python中建立有序字典(OrderedDict),以保存下拉菜单的选项信息。

字典中的每条数据作为一个选项集合,键(key)为选项集名称,值(value)为选项集中的选项。

代码如下:

# data_options.pyfrom collections import OrderedDictdic = OrderedDict()
dic["省份"] = ["河北省","河南省","山西省"]
dic["河北省"] = ["石家庄市","保定市","张家口市"]
dic["河南省"] = ["郑州市","开封市","洛阳市"]
dic["山西省"] = ["太原市","运城市","大同市"]if __name__ == "__main__":for key, value in dic.items():print(f"key = {key}, value = {value}")

如果选项集较多、数据量较大,可以使用Pandas模块进行读取和处理,并转换为上述OrderedDict格式。具体过程不再赘述。

4 主要步骤

4.1 将选项数据写入Excel文件

为了制作Excel中的下拉菜单,需要获取每个下拉菜单的选项信息,即选项信息需要保存在Excel中。这里使用openpyxl模块将选项信息写入Excel文件。代码如下:

# write_options.pyfrom data_options import dic
from openpyxl import Workbook
from openpyxl.utils import get_column_letterpath = r"D:\temp\table01.xlsx"  # 文件输出路径
sheet_name_dic = "dic"  # 保存在Excel中页面的名称book = Workbook()  # 新建Workbook
for sheet in book.sheetnames:del book[sheet]  # 删除其他页面
sheet_dic = book.create_sheet(sheet_name_dic)  # 新建sheetfor num, (key, value) in enumerate(dic.items(), start=1):sheet_dic[f"A{num}"] = key  # 第1列的值为key值(选项集名称)for i in range(len(value)):sheet_dic[f"{get_column_letter(i+2)}{num}"] = value[i]# (上一行)依次将该选项集中的选项填充在该行后续列的单元格中book.save(path)  # 保存Excel文件

运行上述代码后,打开保存的Excel文件(table01.xlsx)中的dic页面如下:

其中A列为各选项集的名称,B列及后续列为各选项集中的选项名称。

4.2 Excel中名称管理器设置

在将选项信息写入Excel文件后,需要通过名称管理器将选项信息与下拉菜单进行关联,因此需要将各选项集的选项信息写入Excel的名称管理器中。

该步骤可以结合上一步(将选项数据写入Excel文件)进行,在遍历每个选项集的过程中,将该选项集的信息写入Excel文件相应位置后,同步保存在Excel的名称管理器中。

因此可以改写上一步的代码(write_options.py文件),加入保存名称管理器相关步骤。主要添加以下代码:

attr_text = f"{sheet_name_dic}!$B${num}:${get_column_letter(len(value)+1)}${num}"
# (上一行)设置名称管理器中每个选项集的取值区域(如:attr_text = "dic!$B$1:$D$1)
value_range = DefinedName(key, attr_text=attr_text)  # 将选项集的名称和选项映射为Excel名称管理器中的格式
book.defined_names.append(value_range)  # 加入Excel中的名称管理器

上述代码中,第1行设置了每个选项集的选项取值区域,第3行将选项集名称与选项信息转换为Excel名称管理器相关格式,第4行将该选项集信息加入Excel的名称管理器。

改写后的代码如下:

# write_options.pyfrom data_options import dic
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.workbook.defined_name import DefinedNamepath = r"D:\temp\table01.xlsx"  # 文件输出路径
dic_name = "dic"  # 保存在Excel中页面的名称book = Workbook()  # 新建Workbook
for sheet in book.sheetnames:del book[sheet]  # 删除其他页面
sheet_dic = book.create_sheet(dic_name)  # 新建sheetfor num, (key, value) in enumerate(dic.items(), start=1):sheet_dic[f"A{num}"] = key  # 第1列的值为key值(选项集名称)for i in range(len(value)):sheet_dic[f"{get_column_letter(i+2)}{num}"] = value[i]# (上一行)依次将该选项集中的选项填充在该行后续列的单元格中attr_text = f"{dic_name}!$B${num}:${get_column_letter(len(value)+1)}${num}"# (上一行)设置名称管理器中每个选项集的取值区域(如:attr_text = "dic!$B$1:$D$1)value_range = DefinedName(key, attr_text=attr_text)  # 将选项集的名称和选项映射为Excel名称管理器中的格式book.defined_names.append(value_range)  # 加入Excel中的名称管理器sheet_dic.sheet_state = "hidden"  # 隐藏该页面
book.save(path)  # 保存Excel文件

运行上述代码后,打开保存的Excel文件(table01.xlsx)中的名称管理器如下:

可知各选项集的选项信息以保存在Excel文件的名称管理器中。 

4.3 Excel中数据验证设置

为了设置Excel中的下拉菜单,通常需要手动在Excel中的数据验证界面完成相应的设置,如下图所示:

为了完成数据验证的自动化设置,需要使用openpyxl模块,具体代码如下:

# set_validation.pyfrom openpyxl import load_workbook
from openpyxl.worksheet.datavalidation import DataValidation"""参数设置"""
path = r"D:\temp\table01.xlsx"  # 文件路径
table_name = "table"  # 数据表页面名称
row_num = 3  # 数据区域的行数(计划在数据表中录入多少条数据)
row_start = 1  # 数据区域从第几行开始(如果第1行需要设置为标题行,则数据区域的起始行数应往后放)
name1 = "省份"  # Excel名称管理器中,一级目录选项关联的选项集名称"""文件读取"""
book = load_workbook(path)  # 读取Excel文件
sheet = book.create_sheet(table_name)  # 创建数据表页面"""一级目录的数据验证设置"""
validation1 = DataValidation(type="list", allow_blank=True, showDropDown=False)  # 数据验证选项
validation1.formula1 = f'=indirect("{name1}")'  # 数据验证表达式
validation1.sqref = f"$A{row_start}:$A{row_start+row_num-1}"  # 数据验证规则的应用区域
sheet.add_data_validation(validation1)  # 添加改规则"""二级目录的数据验证设置"""
validation2 = DataValidation(type="list", allow_blank=True, showDropDown=False)  # 数据验证选项
validation2.formula1 = f'=indirect($A{row_start}:$A{row_start+row_num-1})'  # 数据验证表达式
validation2.sqref = f"$B{row_start}:$B{row_start+row_num-1}"  # 数据验证规则的应用区域
sheet.add_data_validation(validation2)  # 添加改规则"""保存文件"""
book.save(path)

其中DataValidation函数对应着一个Excel数据验证界面设置;formula1对应着Excel数据验证界面的“来源”一栏;sqref对应着该数据验证规则的应用区域。

运行程序后,重新打开该Excel文件,发现已经成功新建了“table”页面。打开该页面,发现指定的区域已经成功设置了下拉菜单,如下图所示:

分别打开A列(省份)、B列(地市)单元格的数据验证界面,发现其设置符合预期要求。

 

5 小结 

本文通过Python中的openpyxl模块分别完成“选项数据写入”“名称管理器设置”“数据验证设置”等步骤,实现了Excel多级联动下拉菜单的自动化设置,在录入数据量较大的情况下能够减少人工录入的工作。

本文通过data_options.py、write_options.py以及set_validation.py共3个Python脚本文件,分别实现了选项数据准备、选项数据写入及Excel名称管理器设置、数据验证设置功能。在实际操作时,可以将上述步骤合并为一个Python文件运行,以避免不必要的文件读写操作。合并后的总代码如下:

from collections import OrderedDict
from openpyxl import Workbook, load_workbook
from openpyxl.utils import get_column_letter
from openpyxl.workbook.defined_name import DefinedName
from openpyxl.worksheet.datavalidation import DataValidation"""参数设置"""
path = r"D:\temp\table03.xlsx"  # 输出文件路径
dic_name = "dic"  # Excel中保存选项的页面名称
table_name = "table"  # Excel中数据表页面名称
row_num = 3  # 数据表中数据区域的行数(计划在数据表中录入多少条数据)
row_start = 1  # 数据表中数据区域从第几行开始(如果第1行需要设置为标题行,则数据区域的起始行数应往后放)
name1 = "省份"  # Excel名称管理器中,一级目录选项关联的选项集名称"""选项数据整理"""
dic = OrderedDict()
dic[name1] = ["河北省","河南省","山西省"]
dic["河北省"] = ["石家庄市","保定市","张家口市"]
dic["河南省"] = ["郑州市","开封市","洛阳市"]
dic["山西省"] = ["太原市","运城市","大同市"]"""选项数据写入以及Excel名称管理器设置"""
book = Workbook()  # 新建Workbook
for sheet in book.sheetnames:del book[sheet]  # 删除其他页面
sheet_dic = book.create_sheet(dic_name)  # 新建页面,用于存放选项数据
for num, (key, value) in enumerate(dic.items(), start=1):sheet_dic[f"A{num}"] = key  # 第1列的值为key值(选项集名称)for i in range(len(value)):sheet_dic[f"{get_column_letter(i+2)}{num}"] = value[i]# (上一行)依次将该选项集中的选项填充在该行后续列的单元格中attr_text = f"{dic_name}!$B${num}:${get_column_letter(len(value)+1)}${num}"# (上一行)设置名称管理器中每个选项集的取值区域(如:attr_text = "dic!$B$1:$D$1)value_range = DefinedName(key, attr_text=attr_text)  # 将选项集的名称和选项映射为Excel名称管理器中的格式book.defined_names.append(value_range)  # 加入Excel中的名称管理器
sheet_dic.sheet_state = "hidden"  # 隐藏该页面"""数据验证设置"""
sheet_table = book.create_sheet(table_name)  # 创建数据表页面# 一级目录
validation1 = DataValidation(type="list", allow_blank=True, showDropDown=False)  # 数据验证选项
validation1.formula1 = f'=indirect("{name1}")'  # 数据验证表达式
validation1.sqref = f"$A{row_start}:$A{row_start+row_num-1}"  # 数据验证规则的应用区域
sheet_table.add_data_validation(validation1)  # 添加改规则# 二级目录
validation2 = DataValidation(type="list", allow_blank=True, showDropDown=False)  # 数据验证选项
validation2.formula1 = f'=indirect($A{row_start}:$A{row_start+row_num-1})'  # 数据验证表达式
validation2.sqref = f"$B{row_start}:$B{row_start+row_num-1}"  # 数据验证规则的应用区域
sheet_table.add_data_validation(validation2)  # 添加改规则"""保存文件"""
book.save(path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.25-1 postman执行+弱网测试

1.导出json脚本 2.打包json文件 3.下载的文件 二 .导入脚本 选择文件 点击导入 导入的接口 三.多接口运行 (1)集合右键,点击run ,运行多个接口 2.编辑环境,集合,执行次数等 运行多个接口 四.运行多个接口…

Pear Admin Flask 开发问题

下载代码请复制以下命令到终端执行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下载git 完成安装后: 安装 Git 后出现的页面是 “Git for Windows 的版本发布说明(Release Notes)”,通常会在安装完成后自动弹…

【C语言】文件操作(详解)

个人主页 今天我们来讲一下有关文件的相关操作,希望看完这篇文章对你有所帮助,大力感谢你对博主的支持! 文章目录 ⭐一、为什么使用文件🎉二、什么是文件2.1 程序文件2.2 数据文件2.3 文件名 🎡三、二进制文件和文本…

基于web的家政服务网站

内容摘要 由于互联网的使用,人们在管理、应用、服务等领域使用数据更加简洁、方便,大大提高了工作效率。互联网正逐渐融入我们的生活,影响和改变我们的生活。 家政服务管理系统是典型的信息管理系统(MIS)。其开发主要…

【leetcode hot 100 739】每日温度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…

算法 | 麻雀搜索算法原理,公式,改进算法综述,应用场景及matlab完整代码

一、麻雀搜索算法(SSA)原理 1. 算法基础 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一种群体智能优化算法,灵感来源于麻雀群体的觅食与反捕食行为。算法将麻雀分为三类角色:发现者(Producer):适应度最高,负责探索全局最优区域;加入者(Follower)…

CAT1模块 EC800M HTTP 使用后续记录

记录一下 CAT1 模块EC800 HTTP 使用后续遇到的问题 by 矜辰所致目录 前言一、一些功能的完善1.1 新的交互指令添加1.2 连不上网络处理 二、问题出现三、分析及解决3.1 定位问题3.2 问题分析与解决3.2.1 查看变量在内存中的位置 3.3 数据类型说明3.3.1 常用格式化输出符号…

单纯形法之大M法

1. 问题背景与标准化 在求解某些线性规划问题时&#xff0c;往往难以直接找到初始的基本可行解。特别是当约束中存在等式或 “≥” 类型的不等式时&#xff0c;我们需要引入人工变量来构造一个初始可行解。 考虑如下标准形式问题&#xff08;假设为最大化问题&#xff09;&am…

Springboot集成Debezium监听postgresql变更

1.创建springboot项目引入pom <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.debezium</groupI…

报错 standard_init_linux.go:228: exec user process caused: exec format error

docker logs 容器名 报错&#xff1a; standard_init_linux.go:228: exec user process caused: exec format error 或者 standard_init_linux.go:228: exec user process caused: input/output error 排查思路 1、检查源镜像的框架是否正确&#xff0c;是否amd64&#x…

Go 代理爬虫

现在注册&#xff0c;还送15美金注册奖励金 --- 亮数据-网络IP代理及全网数据一站式服务商 使用代理服务器&#xff0c;通过 Colly、Goquery、Selenium 进行网络爬虫的基础示例程序 本仓库包含两个分支&#xff1a; basic 分支包含供 Go Proxy Servers 这篇文章改动的基础代码…

STM32实现智能温控系统(暖手宝):PID 算法 + DS18B20+OLED 显示,[学习 PID 优质项目]

一、项目概述 本文基于 STM32F103C8T6 单片机&#xff0c;设计了一个高精度温度控制系统。通过 DS18B20 采集温度&#xff0c;采用位置型 PID 算法控制 PWM 输出驱动 MOS 管加热Pi膜&#xff0c;配合 OLED 实时显示温度数据。系统可稳定将 PI 膜加热至 40℃&#xff0c;适用于…

从零开始:使用Luatools工具高效烧录Air780EPM核心板项目的完整指南

本文将深入讲解如何使用Luatools工具烧录一个具体的项目到Air780EPM开发板中。如何使用官方推荐的Luatools工具&#xff08;一款跨平台、命令行驱动的烧录利器&#xff09;&#xff0c;通过“环境配置→硬件连接→参数设置→一键烧录”四大步骤&#xff0c;帮助用户实现Air780E…

2024年认证杯SPSSPRO杯数学建模C题(第二阶段)云中的海盐全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…

大疆上云api介绍

概述 目前对于 DJI 无人机接入第三方云平台,主要是基于 MSDK 开发定制 App,然后自己定义私有上云通信协议连接到云平台中。这样对于核心业务是开发云平台,无人机只是其中一个接入硬件设备的开发者来说,重新基于 MSDK 开发 App 工作量大、成本高,同时还需要花很多精力在无人…

云原生之开源遥测框架OpenTelemetry(在 Gin 框架中使用 OpenTelemetry 进行分布式追踪和监控)

文章目录 云原生之开源遥测框架OpenTelemetry背景什么是可观测性&#xff1f; 什么是 OpenTelemetry&#xff1f;Opentelemetry的主要优势有以下几点&#xff1a;理解分布式链路日志Spans分布式链路 在 Gin 框架中使用 OpenTelemetry 进行分布式追踪和监控0. 整体思路1. 初始化…

2.(vue3.x+vite)使用vue-router

前端技术社区总目录(订阅之前请先查看该博客) 效果预览 路由配置的“/”与“helloWorld”都可以访问到以下内容 http://10.11.0.87:4000/#/ http://10.11.0.87:4000/#/helloWorld 1:安装vue-router npm i vue-router 2:创建router文件 在src的目录下创建router文件夹…

VUE3 路由配置

1.下载 VueRouter 模块 在命令行中输入 yarn add vue-router 2.导⼊相关函数 在自己创建的router/index.js 文件中 import { createRouter, createWebHashHistory } from vue-router 3.创建路由实例 在自己创建的router/index.js 文件中 const theFirstRouter ()>{return…

NetMizer-日志管理系统-远程命令执行漏洞挖掘

漏洞描述&#xff1a;NetMizer 日志管理系统 cmd.php中存在远程命令执行漏洞&#xff0c;攻击者通过传入 cmd参数即可命令执行 1.fofa搜素语句 title"NetMizer 日志管理系统" 2.漏洞验证 网站页面 验证POC /data/manage/cmd.php?cmdid

Contactile三轴触觉传感器:多维力感赋能机器人抓取

在非结构化环境中&#xff0c;机器人对物体的精准抓取与操作始终面临巨大挑战。传统传感器因无法全面感知触觉参数&#xff08;如三维力、位移、摩擦&#xff09;&#xff0c;难以适应复杂多变的场景。Contactile推出的三轴触觉力传感器&#xff0c;通过仿生设计与创新光学技术…