본문 바로가기

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 함수는 문서에 테이블을 추가하고, 해당 테이블의 첫 번째 셀에 문단과 하이퍼링크를 추가합니다.
  • 하이퍼링크가 추가된 문단은 사용자가 클릭할 수 있으며, 클릭하면 지정된 북마크 위치로 이동합니다.

이 방법을 통해 테이블 셀 내에서도 하이퍼링크를 사용할 수 있으며, 사용자가 테이블 셀 내의 링크를 클릭하면 문서 내 다른 위치로 이동할 수 있습니다. 이는 문서 내의 내비게이션을 향상시키고, 사용자 경험을 개선하는 데 도움이 됩니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.