我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python-docx操作word文件(

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python-docx操作word文件(

目录

  • 基础操作
  • 对象关系
  • 添加样式
    • 中文字体微软雅黑,西文字体Times New Roman
    • 首行缩进
    • 单独设置样式
    • 设置超链接
  • 参考文档

基础操作

from docx import Document
from docx.shared import Inches

# 创建空文档
document = Document()

# 添加,设置级别level,0为Title,1或省略为Heading 1,0<=level<=9
document.add_heading('Document Title', 0)
# 添加段落,参数为text=''和style=None
p = document.add_paragraph('A plain paragraph having some ')
# 添加run对象,参数为text=None和style=None,
# run对象有bold(加粗)和italic(斜体)这两个属性
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')

document.add_paragraph(
    'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
    'first item in ordered list', style='List Number'
)
# 添加图片
document.add_picture('monty-truth.png', width=Inches(1.25))

# 添加表格
records = (
    (3, '101', 'Spam'),
    (7, '422', 'Eggs'),
    (4, '631', 'Spam, spam, eggs, and spam')
)

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for qty, id, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(qty)
    row_cells[1].text = id
    row_cells[2].text = desc

document.add_page_break()

对象关系

1556184806969

document.add_paragraph()之后,默认paragraph的内容到第一个run中。

添加样式

中文字体微软雅黑,西文字体Times New Roman

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'), '微软雅黑')

首行缩进

# 获取段落样式
paragraph_format = style.paragraph_format
# 首行缩进0.74厘米,即2个字符
paragraph_format.first_line_indent = Cm(0.74)

单独设置样式

# 设置
title_ = document.add_heading(level=0)
# 居中
title_.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 添加内容
title_run = title_.add_run(title)
# 设置字体大小
title_run.font.size = Pt(14)
# 设置西文字体
title_run.font.name = 'Times New Roman'
# 设置中文字体
title_run.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

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

#add a hyperlink with the normal formatting (blue underline)
hyperlink = add_hyperlink(p, 'http://www.google.com', 'Google', None, True)

#add a hyperlink with a custom color and no underline
hyperlink = add_hyperlink(p, 'http://www.google.com', 'Google', 'FF8822', False)

document.save('demo.docx')

上面的函数是对整段内容直接添加链接,日常使用的时候,超链接多为关键词,或<a>标签的格式,用paragraph和run这两个对象的关系来解决。

比如有文本内容如下,将其中的<a>标签换为超链接:

"""I am trying to add an hyperlink in a MS Word document using docx module for <a href="python.org">Python</a>. Just do it."""

# 判断字段是否为链接
def is_text_link(text):
    for i in ['http', '://', 'www.', '.com', '.org', '.cn', '.xyz', '.htm']:
        if i in text:
            return True
        else:
            return False

# 对段落中的链接加上超链接
def add_text_link(document, text):
    paragraph = document.add_paragraph()
    # 根据<a>标签拆分文本内容
    text = re.split(r'<a href="|">|</a>',text)
    keyword = None
    for i in range(len(text)):
        # 对非链接和非关键词的内容,通过run直接加入段落中
        if not is_text_link(text[i]):
            if text[i] != keyword:
                paragraph.add_run(text[i])
        # 对链接和关键词,使用add_hyperlink插入超链接
        elif i + 1<len(text):
            url=text[i]
            keyword=text[i + 1]
            add_hyperlink(paragraph, url, keyword, None, True)

参考文档

  1. https://python-docx.readthedocs.io/en/latest/index.html
  2. https://github.com/python-openxml/python-docx/issues/74
  3. http://www.warmeng.com/2018/12/02/auto_report/

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python-docx操作word文件(

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python-docx操作word文件(

目录 基础操作 对象关系 添加样式 中文字体微软雅黑,西文字体Times New Roman 首行缩进 单独设置标题样式
2023-01-31

python操作docx文档

在2017年暑假绿盟实习期间,部门做的一个项目需要用到docx格式的word文档模板操作,现在有如下记录:     关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-
2023-01-31

python 操作 doc /docx

对于python来说操作 doc    需要用到win32com      安装   pip  install  win32com      优点 doc所有的操作都可以执行     缺点 如果没有office就死翘翘了 当然也可以com 
2023-01-31

Python-docx:读写word文档

1Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Microsoft Office 2007/2010, Microsoft Mac Office 200
2023-01-31

Python中怎么对docx文件进行读写操作

这期内容当中小编将会给大家带来有关Python中怎么对docx文件进行读写操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。演示文本为了方便理解,我们以 python-docx.docx 文件为例,演示如
2023-06-16

word打不开docx文件如何解决

如果Word无法打开.docx文件,可以尝试以下解决方法:1. 更新Microsoft Office:确保你使用的是最新版本的Microsoft Office软件。可以通过启动Word并点击“文件”选项卡,然后选择“帐户”并点击“更新选项”
2023-09-29

python中使用docx模块处理word文档

这篇文章主要介绍了python中使用docx模块处理word文档的相关资料,需要的朋友可以参考下
2023-01-05

Word图标未显示在.doc和.docx文档文件怎么办

这篇文章主要介绍了Word图标未显示在.doc和.docx文档文件怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。已经观察到,与Windows中的默认程序设置冲突会导致纯
2023-06-05

python 文件操作api(文件操作函数)

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来
2022-06-04

python 文件操作

python基本的文件操作,包括 open,read,write对文件操作流程:1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件新建一个txt文件,内容是《Yesterday When I Was Young
2023-01-30

python-文件操作

文件操作1.  读 / 写 操作读取: r (read):只能读不能写,文件不存在就报错​#打开文件:    object = open('某txt文件',mode = 'r',encoding = '编码')​#读取文件所有内容到内存:
2023-01-31

Python--文件操作

文件处理流程1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件 r模式,默认模式,文件不存在则报错w模式,文件不存在则创建,文件存在则覆盖a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写
2023-01-30

python文件操作

1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄.
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录