2011-11-03 13 views

Odpowiedz

32

Oto jeden sposób, aby sobie z tym poradzić:

import xlrd 
book = xlrd.open_workbook("sample.xls", formatting_info=True) 
sheets = book.sheet_names() 
print "sheets are:", sheets 
for index, sh in enumerate(sheets): 
    sheet = book.sheet_by_index(index) 
    print "Sheet:", sheet.name 
    rows, cols = sheet.nrows, sheet.ncols 
    print "Number of rows: %s Number of cols: %s" % (rows, cols) 
    for row in range(rows): 
     for col in range(cols): 
      print "row, col is:", row+1, col+1, 
      thecell = sheet.cell(row, col)  
      # could get 'dump', 'value', 'xf_index' 
      print thecell.value, 
      xfx = sheet.cell_xf_index(row, col) 
      xf = book.xf_list[xfx] 
      bgx = xf.background.pattern_colour_index 
      print bgx 

Więcej informacji na Python-Excel Google Group.

+0

Skrypt jest w stanie zidentyfikować kod koloru. Ale teraz mam inny problem. Arkusz programu Excel, który parsuję, ma dwie puste komórki bez żadnego dodatkowego formatowania lub koloru, czyli obie komórki mają białe tło i brak tekstu w środku, w pozycji - (52,4) i (9,4). W pierwszym przypadku kolor ma wartość 64, a dla drugiego 9. Jest jak inny kod koloru dla dwóch podobnych typów komórek? – Kinjal

+0

Czy jesteś pewien, że nie masz jednego "pustego" i innego "bez wypełnienia"? – JMax

+0

Wskaźnik koloru 9 oznacza kolor biały, chyba że paleta została zmieniona. 61 to "systemowy" indeks kolorów; przeczytaj rozdział o indeksach kolorów w pobliżu początku dokumentów xlrd. "puste", "biały" i "brak tekstu w środku" są niejasne. Powiedz nam komórkę ** typ **, wartość i xf_index. Użyj 'repr (value)'. Możesz mieć domyślne formatowanie zastosowane do kolumny 4; co daje "sheet.colinfo_map [4] .xf_index"? –

1

Ta funkcja zwraca wartość rgb tła komórki w krotce.

def getBGColor(book, sheet, row, col): 
    xfx = sheet.cell_xf_index(row, col) 
    xf = book.xf_list[xfx] 
    bgx = xf.background.pattern_colour_index 
    pattern_colour = book.colour_map[bgx] 

    #Actually, despite the name, the background colour is not the background colour. 
    #background_colour_index = xf.background.background_colour_index 
    #background_colour = book.colour_map[background_colour_index] 

    return pattern_colour 
Powiązane problemy