10

私はこのスタイルをドキュメントで定義しています:

styles.add(ParagraphStyle(name='Table Header', font ='Helvetica-Bold',fontSize=16, alignment=TA_CENTER))

これを使用して、各テーブルの一番上の行に入るテキストの段落を定義します(正しく折り返されるように)。

L2sub = [(Paragraph(L[0][0], styles['Table Header']))]

後でテーブルを追加すると、スタイルを定義する場所もあります。

report.append(Table(data,style=[
                ('GRID',(0,0),(len(topiclist)-1,-1),0.5,colors.grey),
                ('FONT', (0,0),(len(topiclist)-1,0),'Helvetica-Bold',16),
                ('FONT', (0,1),(len(topiclist)-1,1),'Helvetica-Bold',12),
                ('ALIGN',(0,0),(-1,-1),'CENTER'),
                ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
                ('SPAN',(0,0),(len(topiclist)-1,0)),
                ]))

私の質問は、最初の行のセルの垂直方向の高さを定義する設定はどこにありますか?テキストがセルに対して大きすぎるか、セル内で低く設定されているという問題がありますが、原因や修正方法を特定できません。両方のサイズを変更しましたが、セルをすべて同じ高さ以外にすることはできません。段落の代わりにテキストをセルに入れると、テーブルdefはうまく機能しましたが、段落が問題を引き起こしました。

4

2 に答える 2

9

TableStyle行の高さを変更できる設定があるとは思いません。Tableその測定値は、新しいオブジェクトを作成するときに与えられます。

Table(data, colwidths, rowheights)

ここcolwidthsで、rowheightsは次のような測定値のリストです。

from reportlab.lib.units import inch
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph
from reportlab.platypus import Table
from reportlab.lib import colors

# Creates a table with 2 columns, variable width
colwidths = [2.5*inch, .8*inch]

# Two rows with variable height
rowheights = [.4*inch, .2*inch]

table_style = [
    ('GRID', (0, 1), (-1, -1), 1, colors.black),
    ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
    ('ALIGN', (1, 1), (1, -1), 'RIGHT')
]

style = getSampleStyleSheet()

title_paragraph = Paragraph(
    "<font size=13><b>My Title Here</b></font>",
    style["Normal"]
)
# Just filling in the first row
data = [[title_paragraph, 'Random text string']]

# Now we can create the table with our data, and column/row measurements
table = Table(data, colwidths, rowheights)

# Another way of setting table style, using the setStyle method.
table.setStyle(tbl_style)

report.append(table)

colwidthsコンテンツにrowheights合わせるために必要な測定値に変更できます。colwidths左から右にrowheights読み取り、上から下に読み取ります。

すべてのテーブル行が同じ高さになることがわかっている場合は、次の便利なショートカットを使用できます。

rowheights = [.2*inch] * len(data)

[.2*inch, .2*inch, ...]これにより、変数のすべての行のようなリストが得られますdata

于 2013-01-02T15:24:56.257 に答える
7

(他の答えにコメントするのに十分な評判がありません)

最後のショートカットに関しては、単に「ROW_HEIGHT = 5*mm」が機能しています。テーブル内の行数ごとに行の高さを掛ける必要はありません。

ROW_HEIGHT = 5 * mm
curr_table = Table(data, COL_WIDTHS, rowHeights=ROW_HEIGH )

少しメモリを節約します。:)

于 2019-02-21T09:19:30.157 に答える