【问题标题】:Python 3 openpyxl UserWarning: Data Validation extension not supportedPython 3 openpyxl UserWarning:不支持数据验证扩展
【发布时间】:2018-12-29 00:07:22
【问题描述】:

所以这是我第一次尝试从 Excel 文件中读取数据,并且尝试使用 openpyxl 模块进行读取。我的目标是用嵌套列表作为其值来整理字典。但是,当我尝试运行它时收到此警告时:

用户警告:数据验证扩展不受支持,将被删除 警告(味精)

我不知道我哪里错了。任何帮助将非常感激。谢谢

import openpyxl
try:
    wb = openpyxl.load_workbook("Grantfundme Master London.xlsx")
    except FileNotFoundError:
        print("File could not be found.")

sheet = wb["FUNDS"]

database = {}
for i in range(250):#this is the number of keys I want in my dictionary so loop through rows 
    charity = sheet.cell(row=i + 1, column=1).value

    area_of_work = []
    org = []
    funding = sheet.cell(row=i + 1, column=14).value

    for x in range(8, 13): # this loops through columns with info I need
        if sheet.cell(row=i +1, column=x).value !="":
            area_of_work.append(sheet.cell(row=i +1, column=x).value)

    for y in range(3, 6): # another column loop
        if sheet.cell(row=i +1, column=y).value !="":
            org.append(sheet.cell(row=i +1, column=y).value)

    database[charity] = [area_of_work,org, funding]

try:
    f = open("database.txt", "w")
    f.close()
except IOError:
    print("Ooops. It hasn't written to the file")

对于那些在这里询问的人,这里是异常的屏幕截图: (

【问题讨论】:

  • excel 工作簿中有什么?有条件格式吗?
  • excel 工作簿是来自 openpyxl 模块的对象。我从这里获取我的信息:automatetheboringstuff.com/chapter12
  • 是的,我明白这一点。我正在参考 Grantfundme Master London.xlsx 工作簿。该工作簿中有什么类型的数据?另外,另一个问题。您在哪里看到此错误?
  • 此警告是否会阻止您对工作表中的数据执行您想要的操作?
  • 哦,我看错了,我的错。在工作簿中,只有一些字符串,包括慈善机构的名称、他们的工作领域、他们是什么类型的组织以及他们正在接受的资金。我认为我选择的工作表上没有任何条件格式。该错误没有引用任何行,所以我不知道哪里出错了

标签: python io openpyxl


【解决方案1】:

Excel 有一个称为数据验证的功能(在我的版本中的“数据”选项卡的“数据工具”部分中),您可以在其中从规则列表中进行选择,以限制可以在单元格中输入的数据类型。这有时用于在 Excel 中创建下拉列表。此警告告诉您 openpyxl 不支持此功能,并且不会强制执行这些规则。如果您希望警告消失,您可以单击 Excel 中的“数据验证”图标,然后单击“全部清除”按钮以删除所有数据验证规则并保存您的工作簿。

【讨论】:

    【解决方案2】:

    谢谢你的截图!如果没有看到实际的 excel 工作簿,很难确切地说出它在抱怨什么。

    如果您注意到屏幕截图引用了阅读器工作表模块的第 322 行。看起来它告诉您 openpyxl 库不支持对 OOXML 标准的数据验证扩展。似乎是说它在您的工作簿中找到了部分数据验证扩展,并且在使用 openpyxl 扩展解析工作簿时会丢失。

    【讨论】:

    • 我不明白这怎么可能。在我的 Excel 文件中,第 322 行是空的,实际上该文件在第 244 行之前只有信息。
    • 它引用 openpyxl.reader.worksheet 模块的第 322 行而不是工作簿的第 322 行。这是阅读您的工作簿的 openpyxl 库的一部分的代码。
    • 有没有办法抑制这个警告?我只想读取数据,不关心数据验证方面。
    • @9a3eedi 您可以使用warnings 模块抑制它:docs.python.org/3/library/warnings.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多