web-dev-qa-db-fra.com

Qu'est-ce qui cause "UserWarning: plage ignorée avec un nom réservé" - openpyxl

J'ai une feuille Excel simple avec les noms des villes dans la colonne A et je veux les extraire et les mettre dans une liste:

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

Avec un petit fichier qui fonctionnait parfaitement (70 rangées). Maintenant, je traite un gros fichier (8300 lignes) et cela me donne cette erreur:

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

mais il n'interrompt pas. Cela ne semble plus continuer. Quelqu'un peut-il me dire ce qui pourrait provoquer l'erreur? Est-ce quelque chose dans le .xlsx? Avez-vous des conseils spéciaux sur ce que je peux rechercher?

17
steph

C'est censé être un avertissement amical vous informant que certains des noms définis sont perdus lors de la lecture du fichier. Les avertissements dans Python ne sont pas des exceptions mais des notes d'information.

La prise en charge des noms définis est essentiellement limitée aux références aux plages de cellules dans openpyxl pour le moment. Mais ils peuvent se référer à beaucoup d'autres choses comme les paramètres d'impression. Cependant, si les objets/valeurs auxquels ils se réfèrent ne sont pas conservés par openpyxl et que le fichier est enregistré puis ouvert par Excel, il peut se plaindre des objets manquants.

16
Charlie Clark

Si vous voulez l'ignorer:

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

Dans mon cas, cet avertissement apparaît lorsque le filtrage est sur l'une de mes feuilles de calcul. Je voulais supprimer l'avertissement afin que cela ne dérange pas mes utilisateurs et je viens de mettre cette ligne dans mon code avant l'appel openpyxl.load_workbook:

warnings.simplefilter("ignore")
8
intrepidhero