OpenPyXL:可以在excel表格中创建一个下拉菜单吗?

2024-04-29 08:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用openpyxl在一个单元中存储一个有效的ip地址列表。目前,数据被简单地放入一个单元中,通常会溢出到其他单元中。使用以下代码:

# Regex to return a tidy list of ip addresses in that block
"""
    r = row to be checked
    s = source or destination columns
    iptc = ips to check
"""

def regex_ips(r, s):
    iptc = ['165.11.14.20', '166.22.24.0/24', '174.68.19.11', '165.211.20.0/23']
    if r is not None:
        if s is not None:
            iptc = str(sheet.cell(r, s).value)
            san = re.sub('\n', ', ', iptc)
            sheet_report.cell(r, 8).value = san

然而,我更希望我能把这些ip地址放在一个下拉列表中,因为这样更容易阅读-所以我的问题有两个,第一,这能做到吗?因为我找不到关于它的任何信息,第二,有没有更好的方法来显示数据而不溢出呢?在

谢谢你读过这个

编辑:添加了一些示例地址和子网,以反映列表中的内容。在


Tags: to数据ipnone列表ifisvalue
2条回答

如果您有更多的IP(10+),那么最好先将它们存储到excel的某个列中,然后将它们的范围用作数据验证“源”即公式1。在

from openpyxl.worksheet.datavalidation import DataValidation
wb = Workbook()

ws = wb.create_sheet('New Sheet')

for number in range(1,100): #Generates 99 "ip" address in the Column A;
    ws['A{}'.format(number)].value= "192.168.1.{}".format(number)

data_val = DataValidation(type="list",formula1='=$A:$A') #You can change =$A:$A with a smaller range like =A1:A9
ws.add_data_validation(data_val)

data_val.add(ws["B1"]) #If you go to the cell B1 you will find a drop down list with all the values from the column A

wb.save('Test.xlsx')

更多信息:https://openpyxl.readthedocs.io/en/2.5/validation.html

首先你必须了解一些Excel的功能。有一种叫做data validation,它可以限制数据输入,通常使用下拉菜单。它可以使用值列表、单元格范围、数值等来限制数据

了解数据验证后,请查看library documentation如何使用此Excel功能。在

相关问题 更多 >