1
以下のコードは、99行のデータとヘッダが各ページ区切りで繰り返される素敵なテストテーブルを作成します。テーブルはかなり狭いので、最初のページの左側に1〜37行、最初のページの右側に38〜74行、第2ページの左側の行75〜99。私はこれを「ページを横切ってテーブルを分割する」と言いましたが、私がしようとしているもののより良い名前があるかもしれません。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)
ありがとうございましたGordon - 私はSimpleDocTemplateにとどまることを望んでいましたので、この機能がアプリケーションにとってどれほど重要かを再評価し、ページテンプレートの修正方法を習得してもらう必要があるかどうかを再確認します。おそらくどこかから選択/学習する既存のページテンプレートのギャラリーはありますか? – PolyGeo
残念ながら、私はあなたがReportLabサイトで見つけることができるもの以外にはないと思います。 –