[python] ReportLab 셀 병합

ReportLab은 파이썬에서 PDF 문서를 생성하는 데 사용되는 강력한 라이브러리입니다. 이 라이브러리를 사용하여 표를 생성하고, 셀을 병합하는 방법에 대해 알아보겠습니다.

보통 ReportLab에서 표를 생성하기 위해 Table 클래스를 사용합니다. Table 클래스의 생성자에는 표의 데이터를 포함하는 2차원 배열을 전달해야 합니다. 이 배열의 각 요소가 표의 셀에 해당합니다.

셀을 병합하기 위해서는 Table 클래스의 drawOn 메서드를 사용해야 합니다. 이 메서드에는 캔버스 객체와 표의 위치, 너비, 높이를 전달해야 합니다. 추가로 셀을 병합하는 데 사용할 수 있는 TableStyle 객체를 생성해야 합니다.

아래는 ReportLab을 사용하여 셀을 병합하는 간단한 예제입니다.

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

# PDF 문서 생성
doc = SimpleDocTemplate("merged_cells.pdf", pagesize=letter)

# 표 데이터 설정
data = [
    ["Name", "Age", "Country"],
    ["John Doe", "25", "USA"],
    ["Jane Smith", "30", "Canada"],
    ["Alex Johnson", "28", "Australia"],
]

# 셀 병합 설정
merged_cells = [('SPAN', (0, 0), (2, 0)),  # 첫 번째 행 셀 병합
                ('SPAN', (1, 3), (2, 3))]  # 네 번째 행 두 번째 열 셀 병합

# 표 생성
table = Table(data)

# 표 스타일 설정
table_style = TableStyle(merged_cells)

# 테이블에 스타일 적용
table.setStyle(table_style)

# 테이블을 PDF에 그리기
elements = [table]
doc.build(elements)

위의 예제에서는 data 배열을 사용하여 표 데이터를 설정하고, merged_cells 변수를 사용하여 병합할 셀을 설정합니다. TableStyle을 사용하여 merged_cells에 설정한 병합 정보를 표에 적용합니다. 그리고 생성한 테이블을 drawOn 메서드를 통해 PDF에 그립니다.

위의 코드를 실행하면 “merged_cells.pdf”라는 이름의 PDF 파일이 생성되고, 첫 번째 행 셀과 네 번째 행 두 번째 열 셀이 정상적으로 병합된 표를 확인할 수 있습니다.