Microsoft Word 문서에서 python-docx
를 사용하여 테이블의 셀에 하이퍼링크를 추가하는 것은 직접적으로 지원되지 않습니다. 그러나 테이블 셀 내의 문단에 하이퍼링크를 추가하여 비슷한 효과를 낼 수 있습니다. 즉, 셀 안에 문단을 만들고, 그 문단에 하이퍼링크를 추가하는 방법으로 구현할 수 있습니다.
특히 파란색에 밑줄 긋는게 왜이렇게 힘든것인지?
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 되는 코드를 싹 적어뒀습니다.
아래는 테이블 셀 내에 하이퍼링크를 추가하는 방법을 보여주는 코드 예시입니다. 이 예시에서는 셀 내의 문단에 하이퍼링크를 추가하고, 해당 하이퍼링크가 문서 내 다른 북마크로 이동하도록 설정합니다.
예제: 테이블 셀에 하이퍼링크 추가
from docx import Document
from docx.oxml.xmlchemy import OxmlElement
from docx.oxml.shared import qn
def add_hyperlink(paragraph, bookmark_name, text):
"""하이퍼링크를 문단에 추가하는 함수"""
hyperlink = OxmlElement('w:hyperlink')
hyperlink.set(qn('w:anchor'), bookmark_name)
# Create a w:r element
new_run = OxmlElement('w:r')
new_run.text = text
hyperlink.append(new_run)
# Create a new Run object and add the hyperlink into it
r = paragraph.add_run()
r._r.append(hyperlink)
# A workaround for the lack of a hyperlink style (doesn't go purple after using the link)
# Delete this if using a template that has the hyperlink style in it
r.font.color.theme_color = MSO_THEME_COLOR.HYPERLINK
r.font.underline = True
def create_table_with_links(doc):
table = doc.add_table(rows=1, cols=1)
cell = table.cell(0, 0)
para = cell.add_paragraph("Click here to go to bookmark:")
# 하이퍼링크 추가
add_hyperlink(para, "TargetBookmark", "Bookmark Link")
doc = Document()
create_table_with_links(doc)
# 북마크 대상 위치 추가
doc.add_paragraph("This is a target paragraph").add_run().add_break()
target_para = doc.add_paragraph("This is where the bookmark points.")
bookmark_start = OxmlElement('w:bookmarkStart')
bookmark_start.set(qn('w:id'), '0')
bookmark_start.set(qn('w:name'), 'TargetBookmark')
target_para._p.append(bookmark_start)
doc.save('Document_with_Table_Hyperlink.docx')
설명:
add_hyperlink
함수는 문단(paragraph
)에 하이퍼링크를 추가합니다. 이 하이퍼링크는 지정된 북마크(bookmark_name
)로 이동하도록 설정됩니다.create_table_with_links
함수는 문서에 테이블을 추가하고, 해당 테이블의 첫 번째 셀에 문단과 하이퍼링크를 추가합니다.- 하이퍼링크가 추가된 문단은 사용자가 클릭할 수 있으며, 클릭하면 지정된 북마크 위치로 이동합니다.
이 방법을 통해 테이블 셀 내에서도 하이퍼링크를 사용할 수 있으며, 사용자가 테이블 셀 내의 링크를 클릭하면 문서 내 다른 위치로 이동할 수 있습니다. 이는 문서 내의 내비게이션을 향상시키고, 사용자 경험을 개선하는 데 도움이 됩니다.
'IT > 파이썬' 카테고리의 다른 글
python-docx - Paragraph 와 Run 이 왜 필요한가? (0) | 2024.06.13 |
---|---|
python-docx - tcPr 옵션을 이용해 cell margin 없애기 (2) | 2024.06.12 |
python-docx - 테이블 셀에 단락 서식 적용하기 (1) | 2024.06.11 |
python-docx - 특정 문단 이후에 문단, 테이블 추가하기 (0) | 2024.06.11 |
'\n'.join(str_buffer) 구문 설명 - join 자동 루프 (0) | 2024.05.21 |