[python] ReportLab 표 컬럼 가로 길이 조절

ReportLab은 Python에서 PDF를 생성하기 위한 강력한 도구입니다. 표를 생성하고 조작할 수 있는 기능도 제공합니다. 이번 글에서는 ReportLab으로 생성한 표의 컬럼 가로 길이를 조절하는 방법을 알아보겠습니다.

1. ReportLab으로 표 생성하기

먼저, ReportLab 패키지를 설치해야 합니다. 다음 명령을 사용하여 ReportLab을 설치합니다.

pip install reportlab

다음은 ReportLab으로 표를 생성하는 간단한 예제입니다. 코드를 실행하고 PDF 파일을 생성해보세요.

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table

data = [
    ['번호', '이름', '나이'],
    ['1', '홍길동', '30'],
    ['2', '김철수', '25'],
    ['3', '이영희', '28']
]

table = Table(data)

doc = SimpleDocTemplate("table.pdf", pagesize=letter)
doc.build([table])

만약 코드를 실행하고 table.pdf 파일을 열어보면, 표의 컬럼이 동일한 가로 길이로 표시되는 것을 확인할 수 있습니다.

2. 표 컬럼 가로 길이 조절하기

ReportLab에서 표의 컬럼 가로 길이를 조절하려면, 각 컬럼에 대해 TableStyle을 사용해야 합니다. TableStyle에서 colWidths 속성을 사용하여 각 컬럼의 가로 길이를 설정할 수 있습니다.

다음은 표의 첫 번째 컬럼의 가로 길이를 50으로, 나머지 컬럼의 가로 길이를 100으로 설정하는 예제입니다.

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import TableStyle

data = [
    ['번호', '이름', '나이'],
    ['1', '홍길동', '30'],
    ['2', '김철수', '25'],
    ['3', '이영희', '28']
]

table = Table(data)

style = getSampleStyleSheet()['BodyText']
style.add('BACKGROUND', (0, 0), (-1, 0), colors.grey)
style.add('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke)
style.add('ALIGN', (0, 0), (-1, 0), 'CENTER')
style.add('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold')
style.add('FONTSIZE', (0, 0), (-1, 0), 12)
style.add('BOTTOMPADDING', (0, 0), (-1, 0), 12)
style.add('BACKGROUND', (0, 1), (-1, -1), colors.beige)

table.setStyle(style)
table.setStyle(TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
    ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
    ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
    ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
    ('FONTSIZE', (0, 0), (-1, 0), 12),
    ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
    ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
    ('BOX', (0, 0), (-1, -1), 1, colors.black),
    ('GRID', (0, 0), (-1, -1), 1, colors.black),
]))

# 컬럼 가로 길이 설정 (첫 번째 컬럼은 50, 나머지 컬럼은 100)
table.setStyle(TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
    ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
    ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
    ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
    ('FONTSIZE', (0, 0), (-1, 0), 12),
    ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
    ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
    ('BOX', (0, 0), (-1, -1), 1, colors.black),
    ('GRID', (0, 0), (-1, -1), 1, colors.black),

    # 첫 번째 컬럼의 가로 길이 설정 (50)
    ('COLWIDTH', (0,0), (0,-1), 50),

    # 나머지 컬럼의 가로 길이 설정 (100)
    ('COLWIDTH', (1,0), (-1,-1), 100),
]))

doc = SimpleDocTemplate("table.pdf", pagesize=letter)
doc.build([table])

위의 코드를 실행하고 table.pdf 파일을 열어보면, 첫 번째 컬럼의 가로 길이는 50으로, 나머지 컬럼의 가로 길이는 100으로 설정된 것을 확인할 수 있습니다.

이처럼, ReportLab을 사용하여 표의 컬럼 가로 길이를 조절할 수 있습니다.

참고 자료