Python3-word文档操作(九):给word文档添加/删除一张图片-利用docx库

1 简介:

在前面几篇博文中已经展示了python的docx库的相关用法,本篇继续学习docx的相关内容。

docx库不仅可以提取word文档中的图片,也可以给文档添加/删除图片。本篇介绍如何添加/删除一张图片到word文档中。

2 添加图片举例:

将一张图片添加到一个word文档中。

思路如下:

1)创建docx:调用docx.Document(doc_name)来实现;

2)添加图片:调用add_picture来实现;

3)保存文件:调用doc.save。

看一下效果图:

 其中,最后的图片是通过代码加进去的。

代码:

# -*- coding: utf-8 -*-
import os
import sys
import re
import time
import docx
from docx.shared import RGBColor
from docx.shared import Pt


def fetch_image(doc_path, desc_path):
    """
    抓取word文件中的图片

    :param doc_path: 文件名称
    :param desc: 目标路径
    :return: 
    """
    doc = docx.Document(doc_path)
    dict_rel = doc.part._rels #rels其实是个目录
    for rel in dict_rel:
        rel = dict_rel[rel]
        print("rel",rel.target_ref)
        if "image" in rel.target_ref:
            # create_dir(desc_path)
            img_name = re.findall("/(.*)", rel.target_ref)[0]  #windos:/
            print("img_name",img_name)
            word_name = os.path.splitext(doc_path)[0]
            print("word_name",word_name)
            if os.sep in word_name:
                new_name = word_name.split('\\')[-1]
            else:
                new_name = word_name.split('/')[-1]
            #图片文件
            img_name = f'{new_name}_{img_name}'
            with open(f'{desc_path}/{img_name}', "wb") as f:
                f.write(rel.target_part.blob)

def get_image():
    """
    获取word文档中的图片

    :param:
    :return: 
    """
    doc_name = "念奴娇_赤壁怀古.docx"
    desc_path = sys.argv[1]
    pwd = os.path.dirname(os.path.abspath(desc_path))
    print("[get_image]desc_path",desc_path)
    desc_path = os.path.join(pwd, desc_path) #目标路径
    fetch_image(doc_name,desc_path)


def add_image():
    """
    在weord文档中添加一个图片

    :param:
    :return: 
    """
    doc_name = "念奴娇_赤壁怀古_1654065536.139004.docx"
    doc = docx.Document(doc_name)

    #添加一个图片
    doc.add_picture('念奴娇_赤壁怀古_image1.jpg')

    doc.save('add_image_test.docx')


#创建目录
def create_dir(desc_path):
    if not os.path.exists(desc_path):
        os.makedirs(desc_path)

if __name__ == '__main__':
    #create_doc()
    #fetch_doc()
    #update_doc()
    #create_doc_table()
    #fetch_doc_table()
    #modify_doc_table()
    #get_image()
    add_image()

说明:

1) add_image:核心函数,用于打开word文档,并添加一个图片到文件中;

2)add_picture:添加一个图片到doc中;

    doc.add_picture('念奴娇_赤壁怀古_image1.jpg'):添加一张图片

3)保存图片:

       doc.save('add_image_test.docx')

3 删除图片举例:

讲一个word文档中的图片删除

原理:

图片是保存在段落中的,所以我们需要清空有图片的那个段落即可。

参考代码如下:

doc_name = "念奴娇_赤壁怀古_1654065536.139004.docx"
doc = docx.Document(doc_name)
doc.add_paragraph("在下面插入一张图片")
doc.add_picture("01.png") 
# 此处是第2个段落有图片
doc.paragraphs[1].clear()
print(doc.inline_shapes)

说明:

1)doc.add_paragraph:添加一个段落到doc中;

2)doc.paragraphs[1].clear(): 将段落清除,即删除。本例中,删除的是下标为1的段落,即图片(本例中,图片所在的段落的下表为1)。

用python操作word文档中的图片,是不是很简单呀!


  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值