python自动化——对word的指定位置放入图片

在word中插入N行3列的图片,并在相对的位置放入对应名称

首先是python-docx中的函数

#在word中添加指定图片
add_picture(image_path_or_stream, width=None, height=None)

add_picture只能添加一行一张图片,所以没办法满足需求。然后通过面向百度编程,触类旁通,看到VBA有类似的处理方法,先在word文档中插入指定的N行3列的表格

#插入N行3列表格
doc.add_table(rows, cols, style=None)

然后再对其定位,传入照片和照片名称

大体思路如上,然后代码处理如下:

第一步是获得俩个list,分别是照片地址和照片名称

path = r"自己照片路径"
# names=os.listdir(path)#列表中的为要读取文件的路径
def new_report(test_report):
    lists = os.listdir(test_report)         # 列出目录的下所有文件和文件夹保存到lists
    lists.sort(key=lambda fn: os.path.getctime(test_report + "/" + fn)) # 按时间排序
#     file_new = os.path.join(test_report, lists[-1])      # 获取最新的文件保存到file_new
#     print(file_new)
#    print(test_report+"/"+fn)
    names=lists
    return names
names=new_report(path)
allxls=[]
label=[]
for name in names:
    a=r'C:'+name
    allxls.append(a)
    label.append(name)
print(allxls[:5])

第二步就是定位传入照片和名称

doc = Document()
tables=doc.add_table(rows=4,cols=3)
num=math.ceil(len(allxls)/3)
for x in range(num*2):
    if x%2==0:
        for i in range(3):  
            run=tables.cell(x, i).paragraphs[0].add_run()
            try:
                run.add_picture(allxls[int(i+(x/2)*3)],width=Inches(2),height=Inches(2.5))  
            except IndexError:
                continue 
            except Exception:
                jpg_ima = Image.open(allxls[int(i+(x/2)*3)])
                jpg_ima.save(label[int(i+(x/2)*3)].split("\\")[-1])
                run.add_picture(allxls[int(i+(x/2)*3)].split("\\")[-1],width=Inches(2),height=Inches(2.5))            
   
    else:
        for i in range(3):
            try:
                tables.cell(x,i).text = label[i+int(x/2)*3]
            except:
                continue
doc.save('1.docx')

感觉整体最难的居然是找这个定位坐标的数学逻辑,体育老师表示心累。

OK,结束。

  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在 VBA 中,可以使用以下代码将内容写入 Word 文档的指定位置,假设要将数据 "001" 写入 Word 文档的第一个段落末尾位置: ```vba Sub 写入内容到Word() Dim wordApp As Object Dim wordDoc As Object ' 创建 Word 应用程序对象 Set wordApp = CreateObject("Word.Application") wordApp.Visible = True ' 打开指定Word 文档 Set wordDoc = wordApp.Documents.Open("C:\路径\文件名.docx") ' 将内容写入 Word 文档的指定位置 wordDoc.Paragraphs(1).Range.InsertAfter "数据001" ' 保存并关闭 Word 文档 wordDoc.Save wordDoc.Close ' 关闭 Word 应用程序 wordApp.Quit ' 释放对象变量 Set wordDoc = Nothing Set wordApp = Nothing End Sub ``` 上述代码中,我们首先创建了一个 Word 应用程序对象和一个文档对象。然后,我们将 Word 应用程序对象设置为可见,并打开指定Word 文档。接下来,我们通过 `wordDoc.Paragraphs(1).Range.InsertAfter` 方法将内容 "数据001" 写入到第一个段落的末尾位置。最后,我们保存并关闭 Word 文档,并关闭 Word 应用程序。 注意:在代码中的 `"C:\路径\文件名.docx"` 处替换为您实际的 Word 文档路径和文件名。 ### 回答2: 使用VBA将内容写入Word指定位置的步骤如下: 1. 首先,在VBA编辑器中打开Word应用程序对象: ```VBA Dim wordApp As Object Set wordApp = CreateObject("Word.Application") wordApp.Visible = True '可选步骤,用于在屏幕上显示Word应用程序 ``` 2. 打开指定Word文档: ```VBA Dim wordDoc As Object Set wordDoc = wordApp.Documents.Open("文件路径\文件名.docx") ``` 3. 定位到要插入内容的指定位置。使用Bookmarks(书签)或Range(范围)对象实现此功能。假设要在名为“数据001”的书签位置插入内容: ```VBA Dim bookmark As Object Set bookmark = wordDoc.Bookmarks("数据001") ``` 4. 插入内容到指定位置。可以使用InsertAfter(插入在书签之后)或InsertBefore(插入在书签之前)方法。下面是一个示例,将文本内容插入到书签位置之后: ```VBA bookmark.Range.InsertAfter "要插入的内容" ``` 5. 保存并关闭Word文档: ```VBA wordDoc.Save wordDoc.Close ``` 6. 最后,关闭Word应用程序对象: ```VBA wordApp.Quit ``` 完成上述步骤后,您可以使用VBA在指定位置将内容写入Word文档中的书签处。记得根据实际情况修改文件路径、文件名和书签名称。 ### 回答3: VBA是一种用于在微软Office应用程序中编写宏的编程语言。要将内容写入Word指定位置,可以借助VBA的操作。 首先,我们需要确保已将Microsoft Word库添加到VBA项目中。点击VBA编辑器中的“工具”选项,然后选择“引用”,勾选“Microsoft Word XX.X对象库”(版本号根据使用的Word版本而定)。 接下来,我们需要使用以下VBA代码将内容写入Word指定位置(假设要写入的位置是文档的第一个段落): ```VBA Sub WriteToSpecifiedLocation() Dim wdApp As Word.Application Dim wdDoc As Word.Document '创建Word应用程序对象 Set wdApp = New Word.Application wdApp.Visible = True '如果希望显示Word应用程序窗口,则设置为True,否则设置为False '打开指定Word文档 Set wdDoc = wdApp.Documents.Open("C:\路径\文件名.docx") '将路径和文件名替换为实际的Word文档路径 '将内容写入指定位置(第一个段落) wdDoc.Paragraphs(1).Range.Text = "数据001" '保存并关闭Word文档 wdDoc.Save wdDoc.Close '释放对象 Set wdDoc = Nothing Set wdApp = Nothing End Sub ``` 在代码中,我们首先创建了一个Word应用程序对象,然后使用`Open`方法打开指定Word文档。接下来,我们使用`Paragraphs(1)`来访问文档的第一个段落,并使用`Range.Text`属性将内容写入该位置。最后,我们保存并关闭Word文档,最后释放相关的对象。 请注意,上述代码中需要将文件路径和名称替换为实际的Word文档路径。此外,如果希望在写入内容后显示Word应用程序窗口,可以将`Visible`属性设置为True,否则可以设置为False来隐藏应用程序窗口。 希望以上回答能对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值