Python在word的指定位置插入图片
Background关于python操作word的相关资料还是挺少的,官方文档也是没法看。自己摸索出来记录下,方便以后自己查看,也分享给大家参考哈。这里使用的是python-docx依赖包。老规矩,先放效果图。原模板文档(箭头处是占位符哈)插入图片后1、安装依赖pip3 install python-docx2、完整源码from docx import Documentfrom docx.shar
·
Background
- 关于python操作word的相关资料还是挺少的,官方文档也是没法看。自己摸索出来记录下,方便以后自己查看,也分享给大家参考哈。
- 这里使用的是
python-docx
依赖包。- 老规矩,先放效果图。
-
原模板文档(箭头处是占位符哈)
-
插入图片后
1、安装依赖
pip3 install python-docx
2、完整源码
from docx import Document
from docx.shared import Inches
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
def center_insert_img(doc, img):
"""插入图片"""
for paragraph in doc.paragraphs:
# 根据文档中的占位符定位图片插入的位置
if '<<img1>>' in paragraph.text:
# 把占位符去掉
paragraph.text = paragraph.text.replace('<<img1>>', '')
run = paragraph.add_run('')
run.add_break()
# 添加图片并指定大小
run.add_picture(img, width=Inches(6.2))
def save_img_to_doc(img):
"""把图片保存到doc文件中的指定位置"""
tpl_doc = 'reports/template.docx'
res_doc = 'reports/res/2022-03-11.docx'
# 打开模板文件
document = Document(tpl_doc)
# 插入图片居中
center_insert_img(document, img)
# 保存结果文件
document.save(res_doc)
def main():
"""主函数"""
img = 'imgs/chart.png'
save_img_to_doc(img)
if __name__ == '__main__':
main()
FAQ
- 占位符问题
<<img1>>
这个只是占位符,你可以换成其他任何的,只要能唯一识别到,比如ph_img1
。有时无法替换是因为程序中读取doc文件时格式问题没把占位符识别成一个,可能识别成了ph_和img1,这个时候你把占位符选中,剪切掉然后再粘贴,粘贴时选择只粘贴文字就行了。具体验证占位符是否可用可参考这篇【python-docx替换字符串【保存原有样式】】
更多推荐
已为社区贡献6条内容
所有评论(0)