2013-07-20 47 views
6

我使用xlrd和xlwt來檢查某些單元格並檢查它們是否符合某些條件。如果他們符合我繼續的標準,如果不符合,我想爲文本RED着色。從單元格到單元格的格式變化,有些是背景色,有些是粗體的,有些是不同的大小,所有這些差異都需要保留。Python xlwt:保留所有樣式,但只有一個

有沒有簡單的方法來做到這一點?

我可以複製我知道很容易使用easy_xf的一個細胞的電流格式,

form = xlwt.easyxf(
      'font: name Gotham Narrow Book, height 140, color red;' 
      'borders: left thin, right thin, top thin, bottom thin;' 
      'pattern: pattern solid, pattern_fore_colour white, pattern_back_colour white' 
      ) 

但本課程的過程中遇到問題,因爲不是每個細胞都有相同的格式(如我上面所解釋的,一些有背景顏色或沒有邊界或不同的字體樣式)。我看着從另一個StackOverflow的問題,這段代碼保存風格:

def _getOutCell(outSheet, colIndex, rowIndex): 
    """ HACK: Extract the internal xlwt cell representation. """ 
    row = outSheet._Worksheet__rows.get(rowIndex) 
    if not row: return None 

    cell = row._Row__cells.get(colIndex) 
    return cell 

def setOutCell(outSheet, col, row, value): 
    """ Change cell value without changing formatting. """ 
    # HACK to retain cell style. 
    previousCell = _getOutCell(outSheet, col, row) 
    # END HACK, PART I 

    outSheet.write(row, col, value) 

    # HACK, PART II 
    if previousCell: 
     newCell = _getOutCell(outSheet, col, row) 
     if newCell: 
      newCell.xf_idx = previousCell.xf_idx 
    # END HACK 

outSheet = outBook.get_sheet(0) 
setOutCell(outSheet, 5, 5, 'Test') 
outBook.save('output.xls') 

看起來好像風格在Cell.xf_idx舉行,但在這個值左看右看之後,我發現它是一個整數,讓我完全困惑於如何從中提取樣式的某些屬性,以便我可以單獨更改字體顏色。

正如我之前所說,有沒有簡單的方法來完成這一點?

回答

1

你應該檢查出模塊xlutils.styles,打開excel與formatting_info = True,然後執行你的邏輯並改變相對的單元格樣式,然後再次保存excel。

open_workbook(excel_file_full_path, formatting_info=True) 
+0

我會接受你的回答並獎勵你的賞金,但我很失望。當然,我已經保存了格式(如何讓所有這些單元格都具有不同的格式?)。所有你真正給我的是這個鏈接。你已經給了我什麼我需要解決這個問題,是的,但你沒有解釋任何關於'xf_idx'或一般的風格(這正是我真正希望的這個問題)。無論如何,謝謝你的幫助。 – scohe001

相關問題