Python 使用 win32com 向 Excel 单元格插入附件
使用 Python 向 Excel 单元格插入附件
本文将介绍如何使用 Python 的 win32com 库,将指定附件插入 Excel 单元格,实现自动化操作。
代码示例
import os
import pandas as pd
import win32com.client
abs_path = os.getcwd()
df = pd.read_excel(r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\3.xlsx', sheet_name='Benchmark Tool', dtype=str, usecols='B', keep_default_na='')
xlApp = win32com.client.Dispatch('Excel.Application')
xlApp.Visible = 0
workbook = xlApp.Workbooks.Open(r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\3.xlsx')
worksheet = workbook.Sheets['Benchmark Tool']
Embedded_object = worksheet.OLEObjects()
row = 1
for i in df.values.tolist():
row += 1
for fn in os.listdir(r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\'):
dh_fj = []
if i[0] in fn:
fj_name = r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\' + 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, 8).Left + 10
obj.Top = worksheet.Cells(row, 8).Top + 10
worksheet.Rows(row).RowHeight = 53
worksheet.Columns(8).ColumnWidth = 75
workbook.Close()
代码解析
- 导入库:导入必要的库,包括
os用于操作文件路径,pandas用于读取 Excel 文件,win32com.client用于操作 Excel 对象。 - 读取 Excel 文件:使用
pd.read_excel读取指定的 Excel 文件,并指定sheet_name、usecols和keep_default_na参数。 - 创建 Excel 对象:使用
win32com.client.Dispatch创建 Excel 应用对象,并关闭可见性。 - 获取工作表:获取指定的 Sheet 对象。
- 创建插入对象:使用
worksheet.OLEObjects创建插入对象。 - 循环插入附件:遍历 DataFrame 中的数据,根据指定条件找到对应的附件文件,并使用
Embedded_object.Add将附件插入单元格。 - 调整单元格格式:调整单元格的宽度和高度,以及插入对象的位置。
- 关闭 Excel 文件:使用
workbook.Close关闭 Excel 文件。
注意点
- 以上代码示例仅供参考,实际使用时需要根据具体需求进行调整。
- 附件路径需要使用绝对路径。
- 可以根据需要调整附件的显示方式(例如:是否显示为图标)。
总结
通过 Python 的 win32com 库,可以方便地将附件插入 Excel 单元格,实现自动化操作。这可以有效提高工作效率,并避免重复的手动操作。
原文地址: https://www.cveoy.top/t/topic/qqMC 著作权归作者所有。请勿转载和采集!