Как найти и получить доступ к названным диапазонам (Global, ND PER-WACKSHEET) с использованием XLRD, Python?
-
02-10-2019 - |
Вопрос
Документация для xlrd
здесьhttp://www.python-excel.org/УМЕНТИИ, ЧТО СЕЙЧАС СЕЙСТА это возможно в последней версии, но не говорит, как.
Решение
Я не уверен, что вы на самом деле читаете; XLRD доступ к названным диапазонам был доступен в течение нескольких лет сейчас (в версии 0.6.0; последняя версия 0.7.1) и пришла с полной документацией AB initio.
Это ссылка на документацию XLRD Это дано на http://www.python-excel.org/ Страница, которую вы упомянули. Хит Пагагаун дважды, и вы должны увидеть раздел, возглавляемый Названные ссылки, константы, формулы и макросы. Отказ Это дает обзор и указывает на документацию Book.name_*
Методы и то Name
объект и демонстрационный скрипт.
Обратите внимание, что это версия багажника SVN документации и относится к будущему выпуску; Он может упомянуть один дополнительный метод удобных, который не доступен в текущей выпуске XLRD (которую вы можете получить от Пейпина) и который включает в себя соответствующую документацию файла.
Обновлять В ответ на "" "я получил это далеко: somerange = book.name_map [u'SoMerange '] [0] и теперь я хочу повторить его, захватить значения, получить его размеры и т. Д. Теперь, что я делаю? Я Пробовал DIR (SomeRange) и помогите (сомневаться), и это не очень не помогло ».«
Что вы звоните someRange
является примером Name
сорт. Вам нужно прочитать Документация этого класса. Отказ Это поможет, если бы вы прочитали демонстрационный скрипт xlrdnameapidemo.py и попробуйте запустить его по файлу XLS (ы). Обратите внимание, что «получить его размеры» логически предшествующим «итерациям над ним, ценностями»; метод удобства Name.area2d
может быть то, что вам нужно.
Другие советы
Это не тривиально, и он работал в моем случае только на xls no xlsx (вероятно, потому что на моем xlsx name.evaluated == 0
):
name = book.name_map['my_named_range'][0]
assert name.result.kind == xlrd.oREF
ref3d = name.result.value[0]
for sheet_index in range(ref3d.shtxlo, ref3d.shtxhi):
sheet = book.sheet_by_index(sheet_index)
for row in range(ref3d.rowxlo, min(ref3d.rowxhi, sheet.nrows)):
for col in range(ref3d.colxlo, min(ref3d.colxhi, sheet.ncols)):
cell = sheet.cell(row, col)
# TODO: Do something with that cell.
Вы хотите ограничить количество столбцов и строк на листе в случае, если ваш диапазон похож на A:A
или 1:1
(т. е. весь ряд или столбец).