2014-01-18 42 views
1

我與Python中的Excel電子表格中工作的細胞起作用。如果條件不受尊重,我想更改整行的背景顏色。但是,在運行我的代碼後,只有行的空單元格的背景顏色(不包含任何字符的那個)會更改。我的第9列包含的信息和我的代碼只是改變從J列的背景色爲Z.set_style在Python xlwt庫不包含文本

from xlrd import open_workbook 
from xlwt import Workbook, easyxf 
Error_Style = easyxf('pattern: pattern solid, fore_colour red;',) 

[...] 

else: 
w_sheet.row(row_index).set_style(Error_Style) 

[...] 

如果我使用與easyxf了錯誤的花樣我想知道。

回答

1

當你編寫使用xlwt細胞,你寫的不僅是價值,而且該小區,其覆蓋在該小區以前的任何造型風格。不幸的是,你不能「繼承」行式。目前,該方式來實現你想要的是創建寫入受影響的行的時候,你將使用樣式,並且包括那些風格同時你正在寫的值。

例如,我具有其中背景應該白色和灰色之間交替的報告。雖然我想將所有偶數行設置爲灰色而不依賴於數值,但我必須有一對樣式,並在適當的時候選擇合適的樣式。它是這樣的:

styles = (easyxf(), easyxf('pattern: pattern solid, fore_color gray25')) 

for rx, record in enumerate(records, start=1): 
    style = styles[rx % 2] # Do your own conditional style selection here 
    for cx, value in enumerate(record): 
     ws.write(rx, cx, value, style) 

實際上,我有不只一對樣式,我有幾對。 (各種不同的列有不同的數字格式,一些百分比,一些日期等)。因此,對於我自己的情況,它比我上面顯示的更復雜。但希望這可以說明我的意思是「在適當的時候選擇合適的風格」。