from docx import Document
from docx.shared import Inches
import glob
from os import listdir
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):
tpl_doc = r'D:\py\归档模版.docx'
res_doc = r'D:\py\空港.docx'
document = Document(tpl_doc)
center_insert_img(document,img)
document.save(res_doc)
def main():
path = r'C:\Users\durpa\Desktop\身份证\*.jpg'
# img = 'C:\\Users\\durpa\\Desktop\\身份证\\75+'
for img in glob.glob(path):
print(img)
save_img_to_doc(img)
if __name__ == '__main__':
main()
代码能运行,但是只能插入一张图...还请大神指教一下..感谢
1
paopjian 2022-04-25 20:43:55 +08:00
save_img_to_doc(img)得在 for 范围里
|
2
jbue520 OP @paopjian 你说的是上面的 for 还是下面的 for? 我缩进都已经做了,但是还只能插入一张图,并不能把目录下的图片全插入进去
|
3
zhzy 2022-04-25 22:16:47 +08:00
根据你的代码 main() 里面的 save_img_to_doc(img) 只运行了一次, 也就是只插入了最后一个 img
|
5
zhzy 2022-04-25 22:18:29 +08:00
save_img_to_doc(img) 和 print(img) 要保持一样的缩进
|
7
kokutou 2022-04-26 07:50:47 +08:00 via Android
每运行一次 save_img_to_doc ,都把源模板 docx 插入 1 张图片,然后保存到了目标 docx 。。。
每次都是用的源模板。。。 这样说你应该懂了吧 |
9
kasusa 2022-04-26 10:23:45 +08:00
是想要把 word 中所有 的<<img1>> 都换成同一张图片嘛
如果是的话,单看我是没看出来有啥问题。不过如果你需要进一步的协助, |
10
kasusa 2022-04-26 10:24:13 +08:00
你可以把文件和代码都传到 github 上面建一个项目我下载下来试试才知道哪里有问题
|
11
jbue520 OP @kasusa 我想把文件夹里的匹配的.JPG 文件全部插入到<<img1>>,其实这部分只是我要做的事情的其中之一, 我把详细的上传到百度网盘了,代码我只实现了一部分,其他的还请大神指教 链接: https://pan.baidu.com/s/1fGIW9heQq-41AkBx53HWAg
提取码:kccx |
12
kasusa 2022-04-26 15:34:22 +08:00
emm 我还是不管那么多了,你想往一个<<img1>>里面插入多张图片对吧,我有空了试着做做看。
而且对于 word 操作我更推荐你用 c#而不是 python ,py 的 docx 库有很多坑 |