2012-02-21 17 views
1

以下のコードは、99行のデータとヘッダが各ページ区切りで繰り返される素敵なテストテーブルを作成します。テーブルはかなり狭いので、最初のページの左側に1〜37行、最初のページの右側に38〜74行、第2ページの左側の行75〜9​​9。私はこれを「ページを横切ってテーブルを分割する」と言いましたが、私がしようとしているもののより良い名前があるかもしれません。ReportLabテーブルをPDFページに分割するにはどうすればいいですか?

from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Frame, Spacer 
from reportlab.lib import colors 
from reportlab.lib.units import cm 
from reportlab.lib.pagesizes import A3, A4, landscape, portrait 
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet 
from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY 
from reportlab.pdfgen import canvas 

pdfReportPages = "C:\\Temp\\test.pdf" 
doc = SimpleDocTemplate(pdfReportPages, pagesize=A4) 

# container for the "Flowable" objects 
elements = [] 
styles=getSampleStyleSheet() 
styleN = styles["Normal"] 

# Make heading for each column and start data list 
column1Heading = "COL ONE" 
column2Heading = "COL TWO" 
# Assemble data for each column using simple loop to append it into data list 
data = [[column1Heading,column2Heading]] 
for i in range(1,100): 
    data.append(["Col 1 Row " + str(i),"Col 2 Row " + str(i)]) 

tableThatSplitsOverPages = Table(data, [2.5 * cm, 2.5 * cm], repeatRows=1) 
tableThatSplitsOverPages.hAlign = 'LEFT' 
tblStyle = TableStyle([('TEXTCOLOR',(0,0),(-1,-1),colors.black), 
         ('VALIGN',(0,0),(-1,-1),'TOP'), 
         ('LINEBELOW',(0,0),(-1,-1),1,colors.black), 
         ('BOX',(0,0),(-1,-1),1,colors.black), 
         ('BOX',(0,0),(0,-1),1,colors.black)]) 
tblStyle.add('BACKGROUND',(0,0),(1,0),colors.lightblue) 
tblStyle.add('BACKGROUND',(0,1),(-1,-1),colors.white) 
tableThatSplitsOverPages.setStyle(tblStyle) 
elements.append(tableThatSplitsOverPages) 

doc.build(elements) 

答えて

2

あなたがページ内の文書を描画するコンテンツ領域を指定することができます複数のフレームを持っているPageTemplateを作成することによって、これを達成するためにPageTemplatesを使用する必要があります。これは、残念なことにSimpleDocTemplateを放棄し、代わりにBaseDocTemplateを使用して独自のPageTemplates(必要な場合は他のもの)を提供することを意味します。

+1

ありがとうございましたGordon - 私はSimpleDocTemplateにとどまることを望んでいましたので、この機能がアプリケーションにとってどれほど重要かを再評価し、ページテンプレートの修正方法を習得してもらう必要があるかどうかを再確認します。おそらくどこかから選択/学習する既存のページテンプレートのギャラリーはありますか? – PolyGeo

+0

残念ながら、私はあなたがReportLabサイトで見つけることができるもの以外にはないと思います。 –

関連する問題