이번에는 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")
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")
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")
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")
'Python > docx' 카테고리의 다른 글
5.docx - 이미지 추가하기 (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 |