Python 3 openpyxl用户警告:不支持数据验证扩展

bqucvtff  于 2023-04-28  发布在  Python
关注(0)|答案(5)|浏览(295)

所以这是我第一次尝试从Excel文件中读取,我尝试使用openpyxl模块来实现。我的目标是整理一个以嵌套列表为值的字典。但是,当我尝试运行它时,得到此警告:
用户警告:数据验证扩展不受支持,将被删除警告(msg)
我不知道我哪里做错了。任何帮助将不胜感激。谢谢

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")

对于那些询问这里是例外的截图:(

egdjgwm8

egdjgwm81#

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

bweufnob

bweufnob2#

有时,简单地清除工作簿中的数据验证规则并不是一个可行的解决方案-可能其他用户依赖于这些规则,或者他们可能被锁定以进行编辑等。
可以使用简单的过滤器忽略错误,并且工作簿可以保持不变,如下所示:

import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

在实践中,这可能看起来像:

import pandas as pd
import warnings

def load_data(path: str):
    """Load data from an Excel file."""
    warnings.simplefilter(action='ignore', category=UserWarning)
    return pd.read_excel(path)

**注意:**请记住重置警告,否则所有其他UserWarnings也将被忽略。

yshpjwxd

yshpjwxd3#

谢谢你的截图!没有看到实际的excel工作簿,很难说它到底在抱怨什么。
如果您注意到屏幕截图引用了读者工作表模块的第322行。它看起来像是在告诉您openpyxl库不支持OOXML标准的数据验证扩展。它似乎在说它在你的工作簿中发现了部分数据验证扩展,当解析带有openpyxl扩展的工作簿时,这些数据将丢失。

5f0d552i

5f0d552i4#

这个错误并不重要,因为你没有在结束代码中保存工作簿:类似于: www.example.com (“Grantfundme Master伦敦.xlsx”)

qcuzuvrc

qcuzuvrc5#

使用warnings.catch_warning上下文管理器暂时忽略警告,如下所示:

import warnings
import pandas as pd

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=UserWarning)
    df = pd.read_excel("file.xlsx")

# now warning filter is restored

相关问题