들어가기 전에
표(Table)는 정보를 명확하고 정확하게 정리하는 데 필수적인 도구입니다. 데이터를 체계적이고 시각적으로 배치하여 매력적인 레이아웃을 만들 수 있게 해줍니다. 파이썬을 사용하여 Microsoft Word 문서에서 테이블을 생성하거나 테이블 데이터를 추출하는 방법을 소개합니다.
※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.
- 원문: Create or Extract Tables in Word with Python
- URL: https://medium.com/@alice.yang_10652/create-or-extract-tables-in-word-with-python-98b2c5f6d9e5
Word에서 표를 만들거나 추출하는 파이썬 라이브러리
Python으로 Word 문서에서 표를 만들거나 추출하려면 Python용 Spire.Doc 라이브러리를 사용할 수 있습니다. Python용 Spire.Doc은 Python 애플리케이션 내에서 Word 파일을 만들고, 읽고, 편집하고, 변환하기 위한 기능이 풍부하고 사용하기 쉬운 라이브러리입니다.
이 라이브러리를 사용하면 Doc, Docx, Docm, Dot, Dotx, Dotm 등 다양한 Word 포맷으로 작업할 수 있습니다. 또한 Word 문서를 PDF, RTF, HTML, 텍스트, 이미지, SVG, ODT, PostScript, PCL, XPS와 같은 다른 유형의 파일 형식으로 렌더링할 수도 있습니다. 터미널에서 다음 명령을 실행하여 PyPI에서 Python용 Spire.Doc을 설치할 수 있습니다.
pip install Spire.Doc
설치에 대한 자세한 내용은 [여기]에서 확인할 수 있습니다.
파이썬으로 Word에서 미리 정의된 행과 열이 있는 표 만들기
Python용 Spire.Doc에서 제공하는 Section.AddTable() 및 Table.ResetCells(int, int) 메서드를 사용하여 Word 문서에서 표를 만들고 행과 열의 개수를 미리 정의할 수 있습니다.
다음은 미리 정의된 행과 열이 있는 표를 만들고 Python 및 Python용 Spire.Doc을 사용하여 Word 문서에서 표에 데이터를 추가하는 방법을 보여주는 예제입니다.
from spire.doc import *
from spire.doc.common import *
# Create a Document instance
document = Document()
# Add a section to the document
section = document.AddSection()
# Set page margins for the section
section.PageSetup.Margins.All = 72.0
# Add a paragraph to the section
para = section.AddParagraph()
# Set text alignment
para.Format.HorizontalAlignment = HorizontalAlignment.Center
# Add text to the paragraph
txtRange = para.AppendText("Employee List")
txtRange.CharacterFormat.FontName = "Calibri"
txtRange.CharacterFormat.FontSize = 16
txtRange.CharacterFormat.Bold = True
# Define table data
header = ["Employee#", "Name", "Department" ]
data =[["93775", "John", "Finance"],
["38295", "Jane", "IT"],
["83864", "Brain", "Marketing"],
["39801", "Sandra", "R&D"]]
# Add a table to the section
table = section.AddTable(True)
# Specify the number of rows and columns for the table
table.ResetCells(len(data) + 1, len(header))
# Set the first row as table header
headerRow = table.Rows[0]
headerRow.IsHeader = True
# Set the height and background color of the header row
headerRow.Height = 23
headerRow.RowFormat.BackColor = Color.FromArgb(1, 142, 170, 219)
# Add data to the header row
for i in range(len(header)):
#Add a paragraph to each cell of the header row
para = headerRow.Cells[i].AddParagraph()
# Set text alignment
headerRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle
para.Format.HorizontalAlignment = HorizontalAlignment.Center
# Add data to the paragraph and set text format
txtRange = para.AppendText(header[i])
txtRange.CharacterFormat.FontName = "Calibri"
txtRange.CharacterFormat.FontSize = 14
txtRange.CharacterFormat.TextColor = Color.get_White()
txtRange.CharacterFormat.Bold = True
# Add data to the remaining rows
for r in range(len(data)):
dataRow = table.Rows[r + 1]
dataRow.Height = 20
for c in range(len(data[r])):
# Add a paragraph to each cell of the rest of the rows
para = dataRow.Cells[c].AddParagraph()
# Set text alignment
para.Format.HorizontalAlignment = HorizontalAlignment.Center
dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
# Add data to the paragraph and set text format
txtRange = para.AppendText(data[r][c])
txtRange.CharacterFormat.FontName = "Calibri"
txtRange.CharacterFormat.FontSize = 11
# Save the result document
document.SaveToFile("CreateTable.docx", FileFormat.Docx2013)
document.Close()
파이썬을 사용하여 Word에서 행과 셀을 동적으로 추가하여 표 만들기
미리 정의된 행과 열로 표를 만드는 것 외에도 행과 셀을 동적으로 추가하여 표를 만들 수 있습니다. 이 기능은 행과 열의 수를 결정할 수 없을 때 유용합니다.
다음은 Python 및 Python용 Spire.Doc을 사용하여 Word 문서에서 행과 셀을 동적으로 추가하여 표를 만드는 방법을 보여주는 예제입니다.
from spire.doc import *
from spire.doc.common import *
# Create a Document instance
document = Document()
# Add a section to the document
section = document.AddSection()
# Set page margins for the section
section.PageSetup.Margins.All = 72.0
# Add a table to the section
table = section.AddTable()
# Dynamically add rows and cells to the table
row = table.AddRow()
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
txtRange = cell.AddParagraph().AppendText("Product")
txtRange.CharacterFormat.FontSize = 13
txtRange.CharacterFormat.Bold = True
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
txtRange = cell.AddParagraph().AppendText("Unit Price")
txtRange.CharacterFormat.FontSize = 13
txtRange.CharacterFormat.Bold = True
row = table.AddRow(True, False)
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("Monitor")
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("$500")
row = table.AddRow(True, False)
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("Keyboard")
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("$80")
row = table.AddRow(True, False)
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("CPU Coolers")
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("$20")
row = table.AddRow(True, False)
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("Mice")
cell = row.AddCell()
cell.SetCellWidth(200, CellWidthType.Point)
cell.AddParagraph().AppendText("$120")
# Apply table style
table.ApplyStyle(DefaultTableStyle.MediumGrid1Accent5)
# Auto resize the table to fit the window size
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
# Save the result document
document.SaveToFile("CreateTableDynamically.docx", FileFormat.Docx2013)
document.Close()
파이썬을 사용하여 Word에서 중첩된 표 만들기
데이터를 표시하기 위해 기존 표에 중첩된 표를 삽입하고 싶을 때가 있습니다. 이 작업을 구현하려면 TableCell.AddTable() 메서드를 사용할 수 있습니다.
다음은 Python 및 Python용 Spire.Doc을 사용하여 중첩된 표를 Word 문서의 기존 표에 삽입하는 방법을 보여주는 예제입니다.
from spire.doc import *
from spire.doc.common import *
# Create a Document instance
document = Document()
document.LoadFromFile("CreateTable.docx")
# Add a section to the document
section = document.Sections[0]
# Get the first table in the section
table = section.Tables[0]
# Add a nested table to the second cell of the fifth row
nestedTable= table.Rows[4].Cells[1].AddTable(True)
# Specify the number of rows and columns of the table
nestedTable.ResetCells(2, 2)
# Add data to the nested table
nestedTable.Rows[0].Cells[0].AddParagraph().AppendText("Birthday")
nestedTable.Rows[0].Cells[1].AddParagraph().AppendText("Phone")
nestedTable.Rows[1].Cells[0].AddParagraph().AppendText("11/16/1983")
nestedTable.Rows[1].Cells[1].AddParagraph().AppendText("01234567")
# Set table alignment
nestedTable.TableFormat.HorizontalAlignment = RowAlignment.Center
# Auto resize the nested table to fit the content
nestedTable.AutoFit(AutoFitBehaviorType.AutoFitToContents)
# Save the result document
document.SaveToFile("CreateNestedTable.docx", FileFormat.Docx2013)
document.Close()
파이썬으로 Word의 HTML 문자열에서 표 만들기
HTML 콘텐츠로 작업할 때 HTML 문자열을 Word 문서 내에서 표로 변환해야 하는 경우가 있을 수 있습니다. 이 작업은 Word 문서에 표시하거나 통합하려는 HTML 형식의 표 형식 데이터가 있을 때 유용합니다.
Python용 Spire.Doc에서는 Paragraph.AppendHTML() 메서드를 사용하여 HTML 문자열을 Word 문서에 추가할 수 있습니다. 다음은 Python 및 Python용 Spire.Doc을 사용하여 Word 문서에서 HTML 문자열로 표를 만드는 방법을 보여주는 예제입니다.
from spire.doc import *
from spire.doc.common import *
# Create a Document instance
document = Document()
# Add a section to the document
section = document.AddSection()
# Set page margins for the section
section.PageSetup.Margins.All = 72.0
# Specify the HTML string
htmlString = """
<style>
.myTable {
border-collapse: collapse;
border: 1px solid black;
}
.myTable th, .myTable td {
border: 1px solid black;
}
</style>
<table class="myTable">
<tr>
<th>Name</th>
<th>Age</th>
<th>City</th>
</tr>
<tr>
<td>John Doe</td>
<td>30</td>
<td>New York</td>
</tr>
<tr>
<td>Jane Smith</td>
<td>25</td>
<td>London</td>
</tr>
</table>
"""
# Add a paragraph to the section
para = section.AddParagraph()
# Append the HTML string to the paragraph
para.AppendHTML(htmlString)
# Save the result document
document.SaveToFile("CreateTableFromHtml.docx", FileFormat.Docx2013)
document.Close()
파이썬으로 Word에서 표 데이터 추출하기
특정 시나리오에서는 Word 문서에서 표 데이터를 추출해야 할 수도 있습니다. 이 작업은 Word 문서에서 표 형식의 정보를 분석, 조작 또는 다른 애플리케이션이나 시스템으로 전송하고자 할 때 유용합니다.
다음은 Python 및 Python용 Spire.Doc을 사용하여 Word 문서의 표에서 데이터를 추출하는 방법을 보여주는 예제입니다.
from spire.doc import *
from spire.doc.common import *
# Create a Document instance
document = Document()
# Load a Word document
document.LoadFromFile("CreateTable.docx")
# Get the first section of the document
section = document.Sections[0]
# Get the first table in the section
table = section.Tables[0]
# Create a list to store the extracted table data
data_list = []
# Loop through the rows in the table
for i in range(table.Rows.Count):
row = table.Rows[i]
# Loop through the cells in each row
for j in range(row.Cells.Count):
cell = row.Cells[j]
# Loop through the paragraphs in each cell
for k in range(cell.Paragraphs.Count):
# Extract data from each paragraph
paragraph = cell.Paragraphs[k]
text = paragraph.Text
# Append the data to the list
data_list.append(text + "\t")
data_list.append("\n")
# Write the extracted data into a text file
with open("TableData.txt", "w", encoding = "utf-8") as text_file:
for data in data_list:
text_file.write(data)
document.Close()
'Python' 카테고리의 다른 글
꼭 알아야 할 파이썬 내장 함수 10가지 (7) | 2024.05.06 |
---|---|
파이썬을 사용하여 PDF에서 텍스트 추출하는 방법 (6) | 2024.05.05 |
파이썬을 사용하여 통계 분석을 수행하는 방법 (9) | 2024.05.01 |
누구나 코드를 작성할 수 있는 무료 코딩 AI 코디움(Codeium) 사용법 (7) | 2024.04.27 |
VS Code를 위한 10가지 유용한 테크닉 (7) | 2024.04.21 |