Python在Excel中嵌入附件(txt文件、zip包、PNG图片、JPG图片)

我们在自动化办公时,经常需要将一些附件插入在Excel表格中!这个我找个好长时间终于找到了解决办法!

为此我写了一个test,有一个Excel其中B列是单号,有一个文件夹放入单号所对应的附件,其中附件的格式多种多样,有TXT、PNG、PDF等,我希望程序能够通过单号寻找到对应的附件,插入在C列

Python在Excel中嵌入附件(txt文件、zip包、PNG图片、JPG图片)_第1张图片

先看视频效果是否是你想要的!!

Python在Excel中嵌入附件(txt文件、zip包、PNG图片、JPG图片)_第2张图片

首先这个程序需要用到的库有

用途 安装
pywin32 控制打开Excel的软件 pip install pywin32
os 获取绝对路径 内置库无需安装
pandas 读取Excel文件 pip install pandas

主要代码(可跳过!!)—这是原帖的代码:

xlApp = win32com.client.Dispatch('Excel.Application') # 这里指的是用office打开
xlApp.Visible = 0 # 不用打开Excel
workbook = xlApp.Workbooks.Open(r'F:\随笔\测试\数据源\test1.xlsx') # 请使用绝对路径

worksheet = workbook.Sheets[0]# 获取sheet

Embedded_object = worksheet.OLEObjects() # 创建插入对象

Embedded_object.Add(ClassType=None, Filename=附件的绝对路径, Link=False, DisplayAsIcon=True, Width=18,Height=50)
Embedded_object.Add(ClassType=None, Filename=附件的绝对路径, Link=False, DisplayAsIcon=True, Width=18,Height=50)
Embedded_object.Add(ClassType=None, Filename=附件的绝对路径, Link=False, DisplayAsIcon=True, Width=18,Height=50)
'''
'''
'''
这里可插入多个附件


Embedded_object = worksheet.OLEObjects()# 这里要重新赋值一下
for i in range(1, (Embedded_object.Count + 1)):

	obj = Embedded_object.Item(i)
	
	obj.Left = worksheet.Cells(插入的行, 插入的列).left + 10
	
	obj.Top = worksheet.Cells(插入的行, 插入的列).Top
	
	worksheet.Rows(插入的行).RowHeight = 50 # 设置高
	
	worksheet.Columns(插入的列).ColumnWidth = 40 # # 设置宽

经过我改写的代码,完整版!

目录结构

文件\文件夹 作用
数据源 存放你的想要插入的Excel文件
附件 存放想要匹配的附件
main.py 主程序

Python在Excel中嵌入附件(txt文件、zip包、PNG图片、JPG图片)_第3张图片

import os
import pandas as pd
import win32com.client
abs_path = os.getcwd()

df = pd.read_excel("./数据源/"+os.listdir("./数据源/")[0],dtype=str,usecols="B",keep_default_na='')

xlApp = win32com.client.Dispatch('Excel.Application') # 这里指的是用office打开
xlApp.Visible = 0 # 不用打开Excel
workbook = xlApp.Workbooks.Open(r'F:\随笔\测试\数据源\test1.xlsx') # 请使用绝对路径

worksheet = workbook.Sheets[0]# 获取sheet

Embedded_object = worksheet.OLEObjects() # 创建插入对象

row = 1 # 从第二行开始,所以这里写1
for i in df.values.tolist():
    row+=1
    for fn in os.listdir("./附件/"):
        dh_fj = [] # 这里为什么写一个列表呢,是因为我实战代码有多个附件
        if i[0] in fn:
            fj_name = abs_path+"\\附件\\"+fn
            print(i[0],fj_name)

            dh_fj.append(Embedded_object.Add(ClassType=None, Filename=fj_name, Link=False, DisplayAsIcon=True, Width=18,
                                Height=50))
            Embedded_object = worksheet.OLEObjects()# 这里要重新赋值一下
            print("数量----",Embedded_object.Count)

            for i2 in dh_fj: # 由于我的代码是可以匹配多个附件,所以从列表里取到插入对象
                obj = i2
                obj.Left = worksheet.Cells(row, 3).left + 10

                obj.Top = worksheet.Cells(row, 3).Top + 10

                worksheet.Rows(row).RowHeight = 53

                worksheet.Columns(3).ColumnWidth = 75


workbook.Close()

最后,程序运行结束后,可以点取消、或者保存,点击取消需要打开看看

Python在Excel中嵌入附件(txt文件、zip包、PNG图片、JPG图片)_第4张图片

最后非常感谢原帖:点我查看

致力于办公自动化的小小程序员一枚

致力于写出清楚的博客

都看到这了,关注+点赞+收藏=不迷路!!

希望能得到您免费的一个关注!

你可能感兴趣的:(Python自动化办公,python,excel,pandas,开发语言,数据分析)