
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 Apr 25, 2022 save_img_to_doc(img)得在 for 范围里 |
3 zhzy Apr 25, 2022 根据你的代码 main() 里面的 save_img_to_doc(img) 只运行了一次, 也就是只插入了最后一个 img |
5 zhzy Apr 25, 2022 save_img_to_doc(img) 和 print(img) 要保持一样的缩进 |
7 kokutou Apr 26, 2022 via Android 每运行一次 save_img_to_doc ,都把源模板 docx 插入 1 张图片,然后保存到了目标 docx 。。。 每次都是用的源模板。。。 这样说你应该懂了吧 |
9 kasusa Apr 26, 2022 是想要把 word 中所有 的<<img1>> 都换成同一张图片嘛 如果是的话,单看我是没看出来有啥问题。不过如果你需要进一步的协助, |
10 kasusa Apr 26, 2022 你可以把文件和代码都传到 github 上面建一个项目我下载下来试试才知道哪里有问题 |
11 jbue520 OP @kasusa 我想把文件夹里的匹配的.JPG 文件全部插入到<<img1>>,其实这部分只是我要做的事情的其中之一, 我把详细的上传到百度网盘了,代码我只实现了一部分,其他的还请大神指教 链接: https://pan.baidu.com/s/1fGIW9heQq-41AkBx53HWAg 提取码:kccx |
12 kasusa Apr 26, 2022 emm 我还是不管那么多了,你想往一个<<img1>>里面插入多张图片对吧,我有空了试着做做看。 而且对于 word 操作我更推荐你用 c#而不是 python ,py 的 docx 库有很多坑 |