2012-09-22 24 views
5

Actualmente estoy usando la versión del módulo xlrd 0.8, pero no sé cómo leer las propiedades de celda como el color de fondo, la fuente y si la celda está bloqueada.Cómo obtener propiedades de celda de Excel en Python

He intentado utilizar

import xlrd 
wb = xlrd.open_workbook(...) 
sh = wb.sheet_by_index(...) 
sh.sh._cell_xf_indexes(2, 2) 

Plantea un error que indica información de formato se debe establecer durante la lectura wb, pero si tuviera ese parámetro, entonces demuestra que todavía no se ha implementado.

¿Hay algún otro módulo o cómo se puede hacer este módulo para leer las propiedades de la celda?

+0

ver http://stackoverflow.com/questions/7991209/identifying-excel-sheet-cell-color-code-using-xlrd-package –

Respuesta

11

las siguientes obras para mí, utilizando XLRD versión 0.7.6:

from xlrd import open_workbook 

wb = open_workbook('tmp.xls', formatting_info=True) 
sheet = wb.sheet_by_name("1") 
cell = sheet.cell(6, 0) 
print "cell.xf_index is", cell.xf_index 
fmt = wb.xf_list[cell.xf_index] 
print "type(fmt) is", type(fmt) 
print 
print "fmt.dump():" 
fmt.dump() 

fmt es una instancia de la clase XF; ver https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting.XF-class

El método dump() imprime toda la información sobre el formato. Aquí está la salida del código anterior:

cell.xf_index is 497 
type(fmt) is <class 'xlrd.formatting.XF'> 

fmt.dump(): 
_alignment_flag: 1 
_background_flag: 1 
_border_flag: 1 
_font_flag: 1 
_format_flag: 0 
_protection_flag: 0 
alignment (XFAlignment object): 
    hor_align: 1 
    indent_level: 0 
    rotation: 0 
    shrink_to_fit: 0 
    text_direction: 0 
    text_wrapped: 0 
    vert_align: 2 
background (XFBackground object): 
    background_colour_index: 64 
    fill_pattern: 1 
    pattern_colour_index: 17 
border (XFBorder object): 
    bottom_colour_index: 0 
    bottom_line_style: 0 
    diag_colour_index: 0 
    diag_down: 0 
    diag_line_style: 0 
    diag_up: 0 
    left_colour_index: 0 
    left_line_style: 0 
    right_colour_index: 0 
    right_line_style: 0 
    top_colour_index: 56 
    top_line_style: 1 
font_index: 72 
format_key: 0 
is_style: 0 
lotus_123_prefix: 0 
parent_style_index: 0 
protection (XFProtection object): 
    cell_locked: 1 
    formula_hidden: 0 
xf_index: 497 

Algunos de esos valores son los índices en listas en el libro wb. Por ejemplo, fmt.font_index es 72, y wb.font_list[72] es una instancia de la clase Font (https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting.Font-class).

Cuestiones relacionadas