python word 创建超链接

import docx
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import Cm, Pt

#document = Document()
# 设置一个空白样式
#style = document.styles['Normal']
# 设置西文字体
#style.font.name = 'Times New Roman'
## 设置中文字体
#style.element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

#定义 创建 超链接 函数
def add_hyperlink(paragraph, url, text, color, underline):
    """
    A function that places a hyperlink within a paragraph object.

    :param paragraph: The paragraph we are adding the hyperlink to.
    :param url: A string containing the required url
    :param text: The text displayed for the url
    :return: The hyperlink object
    """

    # This gets access to the document.xml.rels file and gets a new relation id value
    part = paragraph.part
    r_id = part.relate_to(url, docx.opc.constants.RELATIONSHIP_TYPE.HYPERLINK, is_external=True)

    # Create the w:hyperlink tag and add needed values
    hyperlink = docx.oxml.shared.OxmlElement('w:hyperlink')
    hyperlink.set(docx.oxml.shared.qn('r:id'), r_id, )

    # Create a w:r element
    new_run = docx.oxml.shared.OxmlElement('w:r')

    # Create a new w:rPr element
    rPr = docx.oxml.shared.OxmlElement('w:rPr')

    # Add color if it is given
    if not color is None:
        c = docx.oxml.shared.OxmlElement('w:color')
        c.set(docx.oxml.shared.qn('w:val'), color)
        rPr.append(c)

    # Remove underlining if it is requested
    if not underline:
        u = docx.oxml.shared.OxmlElement('w:u')
        u.set(docx.oxml.shared.qn('w:val'), 'none')
        rPr.append(u)

    # Join all the xml elements together add add the required text to the w:r element
    new_run.append(rPr)
    new_run.text = text
    hyperlink.append(new_run)

    paragraph._p.append(hyperlink)

    return hyperlink
#定义 创建 书签 函数
def add_bookmark(paragraph, bookmark_text, bookmark_name):
    """
    A function that places a hyperlink within a paragraph object.

    :param paragraph: 创建一个段落
    :param bookmark_text: 定位到书签文本会被插入到文档中,
    :param tebookmark_name: 书签名称
    """
    run = paragraph.add_run()
    tag = run._r  # for reference the following also works: tag =  document.element.xpath('//w:r')[-1]
    start = docx.oxml.shared.OxmlElement('w:bookmarkStart')
    start.set(docx.oxml.ns.qn('w:id'), '0')
    start.set(docx.oxml.ns.qn('w:name'), bookmark_name)
    tag.append(start)

    text = docx.oxml.OxmlElement('w:r')
    text.text = bookmark_text
    tag.append(text)

    end = docx.oxml.shared.OxmlElement('w:bookmarkEnd')
    end.set(docx.oxml.ns.qn('w:id'), '0')
    end.set(docx.oxml.ns.qn('w:name'), bookmark_name)
    tag.append(end)

document = docx.Document()
p = document.add_paragraph()
paragraph= document.add_paragraph()

document.add_page_break()

# 添加链接到本文档到书签链接 #temp1 #号后面跟书签名称
hyperlink = add_hyperlink(p, '#temp1', '书签', None, True)
#分页
document.add_page_break()

# 添加链接到url
hyperlink = add_hyperlink(p, 'www.baidu.com', '百度', None, True)

#可以将插入段落放在 add_paragraph('1') 也可以  将插入段落 放在 bookmark_text  书签名称bookmark_name
a=add_bookmark(paragraph= document.add_paragraph('1'), bookmark_text="",bookmark_name="temp1")
document.add_page_break()

b=add_bookmark(paragraph= document.add_paragraph('2'), bookmark_text="",bookmark_name="temp2")

document.add_page_break()
c=add_bookmark(paragraph= document.add_paragraph('3'), bookmark_text="",bookmark_name="temp3")
document.add_page_break()

document.save('demo.docx')

 

参考文档

  1. https://stackoverflow.com/questions/57586400/how-to-create-bookmarks-in-a-word-document-then-create-internal-hyperlinks-to-t
  2. https://github.com/python-openxml/python-docx/issues/74
  3. https://www.cnblogs.com/z123zero/p/10770097.html#%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Python可以用于处理Word和Excel文件。对于处理Excel文件,可以使用xlsxwriter模块来创建Excel XLSX文件,并将文本、数字、公式和超链接写入其中的多个工作表。该模块还支持格式化等功能,可以说是功能最齐全的Excel处理模块之一。此外,还可以使用pandas库来处理Excel文件。\[2\] 对于处理Word文件,可以使用python-docx模块来提取Word表格,并将其保存在Excel文件中。可以使用Document类从Word文件中读取表格数据,然后使用openpyxl模块的Workbook类创建一个新的Excel文件,并将表格数据写入其中。具体的代码示例如下: ```python from docx import Document from openpyxl import Workbook doc = Document(r"path_to_word_file.docx") table = doc.tables\[0\] workbook = Workbook() sheet = workbook.active for row in table.rows: row_data = \[\] for cell in row.cells: row_data.append(cell.text) sheet.append(row_data) workbook.save(filename=r"path_to_excel_file.xlsx") ``` 这段代码将从Word文件中提取第一个表格的数据,并将其保存在一个新的Excel文件中。\[3\] #### 引用[.reference_title] - *1* [python处理excel和word文档](https://blog.csdn.net/qq_29496135/article/details/104075368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python的Excel/Word库](https://blog.csdn.net/xhtchina/article/details/125692712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python自动化办公——python操作Excel、Word、PDF集合大全](https://blog.csdn.net/weixin_41261833/article/details/106028038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值