Как найти и получить доступ к названным диапазонам (Global, ND PER-WACKSHEET) с использованием XLRD, Python?

StackOverflow https://stackoverflow.com/questions/3163073

Вопрос

Документация для 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 (т. е. весь ряд или столбец).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top