openpyxl - 读取数据验证 - 列表

openpyxl - read data validation - list

我有一个 excel sheet,带有数据验证 属性 - 列表。

我需要制作一个包含 column_name 和相关下拉列表值的字典。

例如:{A:[a1, a2, a3], B:[b1, b2], C:[c1, c2, c3, c4]}。

excel中有多个如何嵌入数据验证列表的示例, 但是怎么读呢?

我试过简单的代码:

from openpyxl import load_workbook

excel = load_workbook('test.xlsx')
sheet = excel.get_sheet_by_name('RequiredFormat')
for row in sheet.iter_rows():
    for cell in row:
        print(cell.value)
    input("Proceed ?")

然后我检查了单元格可用的选项。

但是没有说数据验证或列表。

有办法吗?

您目前无法读取现有数据验证。阅读 Openpyxl documentation

这是我将要用来读取列表值和单元格的代码快照

                tstlst = ws.data_validations.dataValidation
                print('---')
                print(tstlst)
                print('---')
                nr = 0
                for tst2 in tstlst:
                    nr += 1
                    print(str(nr) + " : " + str(tst2))
                    tst3 = tst2.sqref
                    print('sqref: ' + str(tst3))
                    tst4 = tst2.formula1
                    print('list: ' + tst4)

也许这很有用

这会为我在 A13 中的数据验证列表生成以下输出

2: 参数: sqref=,showErrorMessage=True,showDropDown=None,showInputMessage=True,allowBlank=False,errorTitle=None,error=None,promptTitle=None, prompt=None, type='list', errorStyle=None, imeMode=None, operator=None, formula1='"val1,val2 ,val3"', 公式2=None

sqref: A13

列表:“val1、val2、val3”

正如@Jeanne Lane 在评论中指出的那样,有一些读取数据验证的能力:

https://foss.heptapod.net/openpyxl/openpyxl/-/issues/827#note_124765

for dv in worksheet.data_validations.dataValidation:
    # dv.type has the type, and other things here....