Python/docx

4. docx - 표(Table) 작성하기 add_table

언제나휴일 2021. 11. 26. 09:59
반응형

이번에는 Document에 표(Table)을 추가하는 것을 알아봅시다.

 

Document 에는 표(Table)을 추가하는 add_table 메서드를 제공합니다.

add_table(rows, cols, style=None) - 테이블 추가

add_table 메서드는 입력 인자로 행과 열의 개수를 전달하며 스타일을 선택적으로 전달할 수 있습니다.

반환 값은 추가한 Table 개체입니다.

1. 표(Table) 추가

Table 형식에는 다양한 멤버를 제공하고 있습니다.

Table 메뉴얼 사이트 - https://python-docx.readthedocs.io/en/latest/api/table.html

 

다음은 2행 5열의 테이블을 생성하여 각 셀에 "행 번호, 열 번호"를 내용으로 작성한 예제 코드입니다.

from docx import Document

document = Document()
document.add_heading("테이블 사용")
table = document.add_table(2,5)
for r in range(len(table.rows)):
    row = table.rows[r]
    for c in range(len(row.cells)):
        cell = row.cells[c]
        cell.text = str.format("{0},{1}",r,c)
document.save("table1.docx")

table1.docx

2. 문서의 표(Table) 스타일 확인하기

Document 에는 현재 문서의 스타일을 보관하는 styles 속성을 멤버로 갖습니다.

그리고 Style 개체에는 type 속성을 통해 어떠한 스타일 타입인지 확인할 수 있습니다.

참고로 표(Table) 타입은 WD_STRYLE_TYPE.TABLE 입니다.

 

다음은 Document 개체를 생성하여 생성한 문서의 스타일 목록을 출력하는 예제 코드입니다.

from docx import Document
from  docx.enum.style import *

document = Document()
for style in document.styles:
    if style.type == WD_STYLE_TYPE.TABLE:
        print(style.name)

다음은 이를 실행하였을 때 수행 결과입니다.

E:\Python\venv\Scripts\python.exe E:/Work/TableStyle.py
Normal Table
Table Grid
Light Shading
Light Shading Accent 1
Light Shading Accent 2
Light Shading Accent 3
Light Shading Accent 4
Light Shading Accent 5
Light Shading Accent 6
Light List
Light List Accent 1
Light List Accent 2
Light List Accent 3
Light List Accent 4
Light List Accent 5
Light List Accent 6
Light Grid
Light Grid Accent 1
Light Grid Accent 2
Light Grid Accent 3
Light Grid Accent 4
Light Grid Accent 5
Light Grid Accent 6
Medium Shading 1
Medium Shading 1 Accent 1
Medium Shading 1 Accent 2
Medium Shading 1 Accent 3
Medium Shading 1 Accent 4
Medium Shading 1 Accent 5
Medium Shading 1 Accent 6
Medium Shading 2
Medium Shading 2 Accent 1
Medium Shading 2 Accent 2
Medium Shading 2 Accent 3
Medium Shading 2 Accent 4
Medium Shading 2 Accent 5
Medium Shading 2 Accent 6
Medium List 1
Medium List 1 Accent 1
Medium List 1 Accent 2
Medium List 1 Accent 3
Medium List 1 Accent 4
Medium List 1 Accent 5
Medium List 1 Accent 6
Medium List 2
Medium List 2 Accent 1
Medium List 2 Accent 2
Medium List 2 Accent 3
Medium List 2 Accent 4
Medium List 2 Accent 5
Medium List 2 Accent 6
Medium Grid 1
Medium Grid 1 Accent 1
Medium Grid 1 Accent 2
Medium Grid 1 Accent 3
Medium Grid 1 Accent 4
Medium Grid 1 Accent 5
Medium Grid 1 Accent 6
Medium Grid 2
Medium Grid 2 Accent 1
Medium Grid 2 Accent 2
Medium Grid 2 Accent 3
Medium Grid 2 Accent 4
Medium Grid 2 Accent 5
Medium Grid 2 Accent 6
Medium Grid 3
Medium Grid 3 Accent 1
Medium Grid 3 Accent 2
Medium Grid 3 Accent 3
Medium Grid 3 Accent 4
Medium Grid 3 Accent 5
Medium Grid 3 Acc

3. 표(Table) 스타일 지정하여 생성하기

문서(Document)에 표(Table)를 추가하는 add_table 메서드에는 스타일을 선택적으로 전달할 수 있습니다.

표(Table)의 스타일은 표를 추가하면서 설정할 수도 있고 생성한 후에 설정할 수도 있습니다.

다음은 생성하면서 표(Table) 스타일을 지정한 예제 코드입니다.

from docx import Document

document = Document()
document.add_heading("테이블 사용")
grid_t_style = document.styles["Table Grid"]
table = document.add_table(2,5,grid_t_style)
for r in range(len(table.rows)):
    row = table.rows[r]
    for c in range(len(row.cells)):
        cell = row.cells[c]
        cell.text = str.format("{0},{1}",r,c)
document.save("table2.docx")

table2.docx

4. 표(Table)에 이미지 추가하기

표(Table)에 이미지를 추가하기 위해 Table 클래스를 보더라도 이미지를 추가하는 별도의 메서드는 없습니다.

대신 표(Table)의 셀(Cell)에 단락을 추가하는 add_paragraph 메서드가 있습니다.

그리고 단란(Paragraph)에는 Run울 추가하는 add_run 메서드가 있습니다.

그리고 Run에는 이미지를 추가하는 add_picture 메서드가 있습니다.

이를 통해 표(Table)에 이미지를 추가할 수 있습니다.

from docx import Document
from docx.shared import Inches

document = Document()
grid_t_style = document.styles["Table Grid"]
table = document.add_table(2,5)
table.style = grid_t_style
for r in range(len(table.rows)):
    row = table.rows[r]
    for c in range(len(row.cells)):
        cell = row.cells[c]
        cell.text = str.format("{0},{1}",r,c)
cell = table.cell(0,0)
para = cell.add_paragraph()
run = para.add_run()
run.add_picture("orum.jpg",width=Inches(1),height=Inches(1))
document.save("table3.docx")

table3.docx

5. 표(Table) 행 높이 열 너비 설정하기

 

표(Table)에서 행 높이를 설정할 때는 행(Row)의 height 속성을 설정합니다.

표(Table)에서 열 너비를 설정할 때는 셀(Cell)의 width 속성을 설정합니다.

from docx import Document
from docx.shared import Inches

document = Document()
grid_t_style = document.styles["Table Grid"]
table = document.add_table(2,5)
table.style = grid_t_style
for r in range(len(table.rows)):
    row = table.rows[r]
    for c in range(len(row.cells)):
        cell = row.cells[c]
        cell.text = str.format("{0},{1}",r,c)
table.cell(0,0).width=Inches(1.0)
table.cell(0,1).width=Inches(2.0)
table.cell(0,2).width=Inches(0.5)
table.cell(0,3).width=Inches(2.0)
table.cell(0,4).width=Inches(1.0)
table.rows[0].height =Inches(1.0)
table.rows[1].height =Inches(0.5)
document.save("table4.docx")

table4

반응형

'Python > docx' 카테고리의 다른 글

5.docx - 이미지 추가하기  (0) 2021.11.26
4. docx - 표(Table) 작성하기 add_table  (0) 2021.11.26
3. docx - 문서에 단락 추가하기 add_paragraph  (0) 2021.11.25
2. docx.Document 소개  (0) 2021.11.25
1. docx 소개  (0) 2021.11.25