Python3,多种方式实现Word自动插入图片,尤其最后一种,值得推荐。

1、引言

小屌丝:鱼哥,帮个忙。
小鱼:双十一购买啥了?
小屌丝:别打岔。
小鱼:你说啥?
小屌丝:大宝剑。
小鱼:这个可以, 正好天冷了, 出去放松放松。
小屌丝:… 你这是选择性的听不清啊。
小鱼:也不是,自动过滤。
小屌丝:帮个忙,完事去spa。
小鱼:这个可以,你说吧
小屌丝:就是把图片自动插入Word文档里面。
小鱼:就这!
在这里插入图片描述

小屌丝:还是足疗的动力大。
小鱼:唉,别这么说,我就是想单纯的分享点知识。
小屌丝:… 你说的都对。

2、代码示例

为了提升一些难度, 我们把图片插入Word文档,每行展示4个图片,

2.1 安装

这里我们用到三方库docx,PIL库
老规矩,第一步 安装

pip install python-docx pillow

其它安装方式,直接看这两篇:

Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
Python3:我低调的只用一行代码,就导入Python所有库!

安装完成,就可以写代码了。

2.2 实例

2.2.1 Demo1

# -*- coding:utf-8 -*-
# @Time   : 2023-11-08
# @Author : Carl_DJ

'''
实现功能:
	图片自动插入Word文档,
	每行插入4张图片
'''
from docx import Document  
from docx.shared import Inches  
from PIL import Image  
import io  
import random  
  
# 创建一个新的Word文档对象  
doc = Document()  
  
# 图片文件夹路径  
img_folder = "./data/images"  
  
# 获取文件夹中的所有图片文件  
img_files = [f for f in os.listdir(img_folder) if f.endswith(".png") or f.endswith(".jpg")]  
  
# 每行应插入的图片数量  
img_per_line = 4  
  
# 总图片数不够一行也要插入  
if len(img_files) < img_per_line:  
    img_per_line = len(img_files)  
  
# 随机选择图片并插入到文档中  
for i in range(0, len(img_files), img_per_line):  
    images = [Image.open(os.path.join(img_folder, f)) for f in img_files[i:i + img_per_line]]  
    widths, heights = zip(*(i.size for i in images))  
    total_width = sum(widths)  
    max_height = max(heights)  
    new_img = Image.new('RGB', (total_width, max_height), color = 'white')  
    x_offset = 0  
    for img in images:          
        new_img.paste(img, (x_offset,0))  
        x_offset += img.width  
    new_img_io = io.BytesIO()      
    new_img.save(new_img_io, format='PNG')   
    image = doc.add_picture(new_img_io, width=Inches(1.0)) # 你也可以设置图片的高度和宽度,这里设置为1英寸宽  
    doc.add_paragraph().add_run().add_picture(image) # 在新的一行添加图片  
      
# 保存文档  
doc.save("output.docx")


2.2.2 Demo2

# -*- coding:utf-8 -*-
# @Time   : 2023-11-08
# @Author : Carl_DJ

'''
实现功能:
	图片自动插入Word文档,
	每行插入4张图片
'''
from docx import Document
from PIL import Image
import os

# 创建一个新的Word文档
doc = Document()

# 获取图像目录中的所有文件名
image_dir = "./data/images"  
images = [f for f in os.listdir(image_dir) if os.path.isfile(os.path.join(image_dir, f))]

# 将每个图像插入到文档中
row_num = 0
col_num = 0
for i, image_name in enumerate(images):
    # 打开图像
    img = Image.open(os.path.join(image_dir, image_name))
    
    # 将图像转换为BytesIO对象
    byte_arr = io.BytesIO()
    img.save(byte_arr, format='PNG')
    byte_arr.seek(0)
    
    # 插入图像
    run = doc.add_run()
    inline_shape = run.add_picture(byte_arr, width=Cm(2), height=Cm(2))
    
    col_num += 1
    
    # 如果当前行已经满了(即插入了4张图片),则开始新的一行
    if col_num == 4:
        row_num += 1
        col_num = 0
        
# 保存文档
doc.save('output.docx')


3、总结

Demo1和Demo2 各有千秋,
Demo2写法更简洁,更直观。
其实在平时工作中,并不需要特别复杂的代码逻辑即可实现的功能,那一定不要写的太花哨,否则,后期的维护, 其他同学接手你的代码,确实很痛苦。

当然, 参数化,还是有必要的。
今天的分享就到这里。
每天掌握一个自动化小技巧,提升工作效率,省下的时间去SPA,是香的哦。

在这里插入图片描述

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,带你学习更多更专业更前言的Python相关技术。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python实现word自动排版是通过操作Word文档实现的。Word文档一种MS Word应用程序的文档格式,使用Python可以通过Office API来实现Word的操作。 Python提供了一些针对Word文档的库,比如Python-docx库、Win32com库等,可以通过这些库来实现Word文档的排版。其中Python-docx库对于Word文档的操作比较简单,可以使用该库来创建、修改和保存Word文档。 在Python-docx库中,最基础的操作是创建文档对象Document(),这个文档对象就是一个Word文档,之后可以在文档中添加各种元素,包括文本、表格、图片、图表等,还可以设置这些元素的格式、字体、大小等属性。 例如,我们可以使用Python-docx库通过以下代码来创建一个包含一段文字和一个表格的Word文档: ``` import docx # 创建空的Word文档 doc = docx.Document() # 添加文本 doc.add_paragraph('这是一段文字') # 添加表格 table = doc.add_table(rows=3, cols=3) table.cell(0, 0).text = '单元格1' table.cell(0, 1).text = '单元格2' table.cell(0, 2).text = '单元格3' # 保存文档 doc.save('example.docx') ``` 另外,可以通过Python-docx库的样式Style类来设置字体、大小、颜色等样式,进一步实现Word文档的排版。 综上所述,Python实现Word自动排版,需要熟练掌握Python-docx库的各种操作,灵活运用Word文档中的元素和样式,结合实际需求,通过编写Python代码实现Word文档自动排版。 ### 回答2: Python可以使用多种库来实现Word自动排版,其中应用最广泛的是python-docx库。该库使得用户可以在Python环境下读取和修改Microsoft Word文档实现文本格式设置、插入图片和表格等各种功能。 使用python-docx库排版Word文档需要掌握一些基本的Python编程知识,包括创建和修改文本、格式化文本样式、处理表格数据、插入图片等操作。首先要导入python-docx库,然后需要创建和打开Word文档,向文档中添加文本和文本格式,例如设置字体、大小、颜色、加粗、斜体等。还可以通过调整段落格式实现排版,例如调整行距、段落间距、缩进等。如果需要插入表格,可以使用python-docx库中的表格模块,创建表格并向其中添加数据。需要插入图片时,也可以使用相应的函数,将图片插入到文档中。 除此之外,还可以使用其他Python库如Pillow对图片进行处理,使得图片在文档中显示时具有更好的效果。此外,用户还可以使用模板功能,实现文档自动排版,大大增强了Python实现Word自动排版的便捷性。 总之,Python作为一种广泛应用的编程语言,通过使用现有的第三方库和自己编写创建的自定义代码,可以在Word文档实现各种自动化操作,从而提高工作效率和减少出错几率。 ### 回答3: Python一种非常流行的编程语言,它在文本处理方面有很多强大的功能。其中之一就是实现Word自动排版。 Python可以通过读取Word文档的内容,自动对文本进行格式化和排版。我们可以通过使用Python的Docx库来实现这个功能。该库可以让我们操作Word文档,包括添加、更改和删除内容等。 使用Python实现Word自动排版需要完成以下几个步骤: 1. 读取Word文档:我们可以使用Docx库中的Document函数来读取Word文档。 2. 设置格式化样式:使用Docx库的相关函数设置需要的样式,如字体、字号、段落格式等。 3. 对文本进行格式化处理:比如对某个段落进行缩进、对齐方式的修改等。 4. 保存处理后的Word文档:将处理后的文本保存为新的Word文档Python实现Word自动排版可以帮助我们节约大量的时间和精力。它可以使我们的文档更加规范、美观、易读,并提高我们的工作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Carl_奕然

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

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

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

打赏作者

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

抵扣说明:

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

余额充值