2013-07-25 25 views
1

我必須打印一個長度可能爲數百行的報表。它的特殊之處在於每個項目的內容應該打印在兩行上。這些線條有特定的風格。如何爲表格的偶數行和奇數行定義樣式(python reportlab)

樣品:

line 1 : First Header line 
line 2 : Second Header line 
line 3 : Name , adress 
line 4 : birth date , gender, hobbies 
line 5 : Name , adress 
line 6 : birth date , gender, hobbies 
... 

我用表格來處理每個頁面內容。

在樣式定義,我有這樣的事情:

('FONTSIZE',(0,2),(-1,-1),18) 

但我想這種風格適用於所有偶數行這樣一個

('FONTSIZE',(0,2),(-1,1),12) 

風格適用於所有賠率行。

最好的是,這兩種風格適用於整個表,除了第一行和第二行包含表頭。

回答

5

您可以通過讓代碼生成基於行號的表格樣式來實現此目的。 Reportlab確實具有內置功能,可自動爲行和顏色執行交替背景顏色(在用戶手冊中查找ROWBACKGROUNDSCOLBACKGROUNDS),但對於任意樣式,您必須通過循環遍歷數據來執行類似以下的自定義操作行。

table_style = [...] 

for i, row in enumerate(table_rows): 
    if i % 2 == 0: 
    table_style.append(('FONTSIZE',(0,i),(-1,i),18)) 
    else: 
    table_style.append(('FONTSIZE',(0,i),(-1,i),12)) 

my_table.setStyle(TableStyle(table_style)) 
+0

有一個錯誤。正確的代碼: my_table.setStyle(table_style) –