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. CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
  2. 超链接浏览meta name=format-detection/ 的用法
  3. win系统加入方舟服务器秒退,win10玩方舟闪退 | 手游网游页游攻略大全
  4. spring拦截器覆盖_Spring中使用Interceptor拦截器
  5. http://udacity.com 和 https://www.udemy.com 请注意区分!
  6. html彩色背景指令,HTML_第四章 颜色背景的CSS,本 章 C S S 的 主 - phpStudy...
  7. GitHub 上 15 个优秀开源项目告诉你如何上手数据科学!
  8. Linux Socket学习(五)
  9. Oracle数据库的四款工具软件
  10. linux拔掉网线ip仍然在,openwrt 实现网线的拔插能够释放IP和重新分配IP地址
  11. 僵尸网络项目代码-DDOS攻击复现-研究报告
  12. IT开发工程师经典面试
  13. ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用
  14. 一元线性回归方程C语言实现
  15. 服务器安全狗Windows V5.0正式版
  16. FlexRay AUTOSAR网络管理(AUTOSARFRNM)简介
  17. 服务器ie安全增强关闭还是显示,如何关掉ie浏览器的增强安全配置
  18. 初中学历可以学软件测试转行吗
  19. fs模块下的readFile()和readFileSync()
  20. c语言16左移3位,点阵16*32综合(间断、上移、下移、左移、右移、左拉、右拉)C程序...

热门文章

  1. html锚链接设为无效,使用jQuery使HTML锚链接(HyperLink)不可点击或禁用
  2. docker for mac dockerip_可能是Mac上最好用的键鼠套装:罗技MX Keys amp; MX Master 3 For Mac 体验...
  3. c语言amp;amp;怎么执行的,C语言中的 ++x || ++y z++ 是如何执行的?XCOPY爱高贝cb3...
  4. python学习day30
  5. 透明传输 非透明传输
  6. PCL函数库摘要——点云分割
  7. NOIP模拟(10.22)T2 杆子的排列
  8. python3 csv读写_Python3读写CSV文件
  9. python聊天程序_python实现聊天小程序
  10. VR线上虚拟展厅,为企业带来的优势: