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 valuepart = paragraph.partr_id = part.relate_to(url, docx.opc.constants.RELATIONSHIP_TYPE.HYPERLINK, is_external=True)# Create the w:hyperlink tag and add needed valueshyperlink = docx.oxml.shared.OxmlElement('w:hyperlink')hyperlink.set(docx.oxml.shared.qn('r:id'), r_id, )# Create a w:r elementnew_run = docx.oxml.shared.OxmlElement('w:r')# Create a new w:rPr elementrPr = docx.oxml.shared.OxmlElement('w:rPr')# Add color if it is givenif 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 requestedif 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 elementnew_run.append(rPr)new_run.text = texthyperlink.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_texttag.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

python word 创建超链接相关推荐

  1. poi操作Word创建超链接

    项目引入poi: <dependency><groupId>org.apache.poi</groupId><artifactId>poi</ar ...

  2. python套用word模板_如何使用Python批量创建Word模板

    如何使用 Python 批量创建 Word 模板 在日常工作中我们经常需要重复性地将同一份内容的 Word 文档资料发送 给多个不同客户, 此时 Word 文档内容可能只有客户署名不同. 或者只有部分 ...

  3. python 批量创建文件(txt,word)

    python 批量创建文件(txt,word) python如何根据一个excel中的一列数据作为文件名称来批量创建文件. 用到的库是os和pandas import pandas as pd# 首先 ...

  4. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法

    通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差异.如果有过Windows下使用Word的经历,那么使用wi ...

  5. python word自动化_python操作word,自动化办公

    **安装依赖:** ``` pip install python-docx ``` **简单的写入一点内容:** ``` import docx file=docx.Document() #创建内存中 ...

  6. python Word 文档

    利用 python-docx 模块, Python 可以创建和修改 Word 文档,它带有.docx 文件扩展名.运行 pip install python-docx,可以安装该模块. 注意:OSI ...

  7. 使用python语言创建空列表score_使用NLP创建摘要

    你有没有读过很多的报告,而你只想对每个报告做一个快速的总结摘要?你是否曾经遇到过这样的情况? 摘要已成为21世纪解决数据问题的一种非常有帮助的方法.在本篇文章中,我将向你展示如何使用Python中的自 ...

  8. 怎么将html链接发微博,微博怎么发Word里带超链接的文字?

    2 回答 回答: 用户都能自己编宏代码了,你还要它大师干嘛? 这个需求得用宏代码来实现. 请留下联系方式,将程序模板文档发给你. 有关文件批量处理的功能需求,比如批量替换,批量更名,批量压缩,批量裁剪 ...

  9. html语言代码超链接,html 超链接 word html超链接代码

    [网页用word打开]可以直接打开word文件的超链接在网页中,怎么样... "打开/保存"是因浏览者的浏览器而异的,假如浏览者的电脑没有装word软件,那么,无论什么情况,都是打 ...

最新文章

  1. 周志华:Boosting学习理论的探索 —— 一个跨越30年的故事
  2. 调用 动态库 实现插件(windows linux)
  3. 【深度学习】SETR:基于视觉 Transformer 的语义分割模型
  4. HDU - 4416 Good Article Good sentence(广义后缀自动机/后缀自动机)
  5. 光盘 机密_使用保险柜管理机密
  6. (兔子繁殖问题)有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问32个月过后的兔子总数为多少?...
  7. Interceptor的用法以及和Filter的区别
  8. Linux之基本正则表达式(grep)
  9. xSeries 232双机热备份配置(塔式)
  10. 杭电1072 猜数字
  11. 独立站国际物流怎么解决?
  12. js return 闭包为null_那么如何让你的 JS 写得更漂亮?
  13. 关于返回一个整数数组中最大子数组的和的问题(续01)
  14. Node.js的集群功能以及在Express的配置
  15. IT实施计划实战经验分享:如何制定
  16. php匹配车牌号,分享一个非常全的php正则验证车牌格式的函数
  17. fftshift使用
  18. 计算机常见故障判断与排除,计算机常见故障的诊断与排除PPT课件.ppt
  19. c语言实验内容设计思路,c语言实验报告书3.doc
  20. 信创办公--基于WPS的Word最佳实践系列(修改标题样式快速实现章前分页效果)

热门文章

  1. php system权限,让PHP以ROOT权限执行系统命令的方法
  2. vim编译linux程序,Linux——vim程序编程器
  3. 中国研制新人工智能服务器:首次搭载寒武纪AI芯片
  4. 科研创新的16条方法
  5. win10电脑桌面透明便签_在win10系统的电脑桌面上使用便签贴方法!
  6. WebLogic 12c 配置 https
  7. axios封装,api接口封装统一管理
  8. 黑苹果NVIDIA显卡驱动程序【 WebDriver-387.10.10.10.40.113+支持 macOS 10.13.6 High Sierra (17G4015)版本】
  9. LINUX下ThinkPad指点杆设置
  10. flutter 动画json_Flutter 中的 JSON 解析