2012-09-22 13 views
5

Właściwie używam wersji xlrd modułu 0.8, ale nie wiem, jak odczytać właściwości komórki, takie jak kolor tła, czcionka i czy komórka jest zablokowana.Jak uzyskać właściwości komórki Excel w Pythonie

Próbowałem użyć

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

Podnosi błąd mówiąc formatowania informacji musi być ustawiona podczas czytania wb, ale gdybym miał ten parametr to pokazuje, że nadal nie jest realizowany.

Czy istnieje inny moduł lub w jaki sposób można sam ten moduł odczytać właściwości komórki?

+0

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

Odpowiedz

11

Poniższe działa na mnie, używając xlrd wersji 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 jest instancją klasy XF; zobacz https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting.XF-class

Metoda dump() drukuje wszystkie informacje o formacie. Oto wynik powyższego kodu:

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 

Niektóre z tych wartości są indeksy na listy na skoroszycie wb. Na przykład: fmt.font_index to 72, a wb.font_list[72] jest instancją klasy Font (https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#formatting.Font-class).

Powiązane problemy