Что вызывает "UserWarning: Отброшенный диапазон с зарезервированным именем" - openpyxl
У меня есть простой EXCEL-лист с названиями городов в столбце A, и я хочу извлечь их и поместить их в список:
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? Любые специальные подсказки, которые я могу найти?
Ответы
Ответ 1
Это должно быть дружественное предупреждение, дающее вам знать, что некоторые определенные имена теряются при чтении файла. Предупреждения в Python не являются исключениями, а информационными уведомлениями.
Поддержка определенных имен по существу ограничена ссылками на диапазоны ячеек в openpyxl на данный момент. Но они могут ссылаться на множество других вещей, таких как настройки печати. Однако, если объекты/значения, на которые они ссылаются, не сохраняются openpyxl, и файл сохраняется и позже открывается Excel, он может жаловаться на недостающие объекты.
Ответ 2
В моем случае это предупреждение появляется, когда фильтрация находится на одном из моих рабочих листов. Я хотел подавить предупреждение, чтобы он не беспокоил моих пользователей, и я просто поместил эту строку в свой код перед вызовом openpyxl.load_workbook:
warnings.simplefilter("ignore")
Ответ 3
Если вы хотите игнорировать его:
import warnings
warnings.simplefilter("ignore")
wb = load_workbook(path)
warnings.simplefilter("default")