web-dev-qa-db-ja.com

「UserWarning:予約された名前の破棄された範囲」の原因-openpyxl

列Aに都市の名前を含む簡単なExcelシートがあり、それらを抽出してリストに入れたいと思います。

def getCityfromEXCEL():
    wb = load_workbook(filename='test.xlsx', read_only=True)
    ws = wb['Sheet1']
    cityList = []

    for i in range(2, ws.get_highest_row()+1):
        acell = "A"+str(i)
        cityString = ws[acell].value
        city = ftfy.fix_text_encoding(cityString)            
        cityList.append(city)

getCityfromEXCEL()

完全に機能した小さなファイル(70行)を使用します。大きなファイル(8300行)を処理していると、次のエラーが発生します。

/Library/Python/2.7/site-packages/openpyxl/workbook/names/named_range.py:121: UserWarning: Discarded range with reserved name
  warnings.warn("Discarded range with reserved name")

しかし、打ち切られません。それはもはや継続していないようです。誰かがエラーの原因を教えてくれますか?それは.xlsxに何かありますか?私が探すことができる特別なヒントはありますか?

17
steph

これは、定義された名前の一部がファイルの読み取り時に失われていることを知らせるわかりやすい警告であるはずです。 Pythonの警告は例外ではなく、情報通知です。

定義された名前のサポートは、基本的に現時点ではopenpyxlのセル範囲への参照に限定されています。しかし、それらは印刷設定のような他の多くのものを参照することができます。ただし、それらが参照するオブジェクト/値がopenpyxlによって保持されておらず、ファイルが保存され、後でExcelで開かれた場合、欠落しているオブジェクトについて不平を言う可能性があります。

16
Charlie Clark

無視したい場合:

import warnings
warnings.simplefilter("ignore")
wb = load_workbook(path)
warnings.simplefilter("default")
9
e18r

私の場合、この警告は、フィルタリングが私のワークシートの1つにあるときに表示されます。ユーザーに迷惑をかけないように警告を抑制したかったので、openpyxl.load_workbookを呼び出す前にコードに次の行を挿入しました。

warnings.simplefilter("ignore")
8
intrepidhero