Cómo localizar y acceder a los rangos con nombre (mundial, apel-hoja de trabajo) utilizando XLRD, Python?

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

Pregunta

La documentación para xlrd aquí http://www.python-excel.org/ menciona que ahora es posible en la versión más reciente, pero no dice cómo.

¿Fue útil?

Solución

No estoy seguro de lo que en realidad se está leyendo; Acceso a XLRD rangos con nombre ha estado disponible desde hace algunos años (en la versión 0.6.0, última versión es la 0.7.1). y vino con la documentación completa ab initio

Este es el enlace de documentación XLRD que se le da en la http://www.python-excel.org/ página que usted ha mencionado . Hit PageDown dos veces y debería ver una sección titulada referencias con nombre, constantes, fórmulas y macros . Esto da una visión general y se indican las documentación de los métodos Book.name_* y el objeto Name, y para una secuencia de comandos de demostración.

Tenga en cuenta que esta es la versión SVN tronco de la documentación y se aplica a una versión futura; se puede mencionar un método de conveniencia adicional que no está disponible en la versión actual de lanzamiento de XLRD (que se puede obtener de PyPI ) y que incluye el archivo de la documentación pertinente.

Actualizar en respuesta a "" "Tengo este momento: someRange = book.name_map [u'somerange '] [0] y ahora quiero iterar sobre ella, los valores de agarre, obtener su dimensiones, etc. Ahora, ¿qué hago? me trataron dir (someRange) y ayuda (someRange) y no ha ayudado mucho. "" "

Lo que está llamando someRange es una instancia de la clase Name. Es necesario leer la documentación href="https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#__init__.Name-class" rel="nofollow de esa clase . Sería de gran ayuda si fuera a leer la manifestación guión xlrdnameAPIdemo .py e intente ejecutar por encima de su archivo XLS (s). Tenga en cuenta que "conseguir sus dimensiones" precede lógicamente "iterar sobre ella, valores agarrar"; Name.area2d el método de conveniencia puede ser lo que necesita.

Otros consejos

No es trivial y funcionó en mi caso sólo en XLS sin XLSX (probablemente porque en mi name.evaluated == 0 XLSX):

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.

Se desea limitar el número de columnas y filas de la hoja en caso de que su rango es como A:A o 1:1 (es decir, toda la fila o columna).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top