使用 Python 将图片插入 Excel:完整指南和错误解决
这是一个使用 Python 操作 Excel 的代码示例,用于将指定文件夹下的 .png 文件插入到 Excel 文件中。
在运行代码之前,请确保已安装 pandas 和 pywin32 库。另外,请仔细检查 Excel 文件的路径和文件名是否正确。
import os
import pandas as pd
import win32com.client
# 获取当前工作目录
abs_path = os.getcwd()
# 读取 Excel 文件中的数据
df = pd.read_excel(r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\2023 acer video performance_test_criteria_V1.0_20220928.xlsx',
sheet_name='Benchmark Tool', dtype=str, usecols='E', keep_default_na='')
# 获取指定文件夹下的所有 .png 文件
png_files = [file for file in os.listdir('D:/STRESSTOOL/GPU_Caps_Viewer/benchmark') if file.endswith('.png')]
# 创建 Excel 对象
xlApp = win32com.client.Dispatch('Excel.Application')
xlApp.Visible = 0
workbook = xlApp.Workbooks.Open(r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\2023 acer video performance_test_criteria_V1.0_20220928.xlsx')
# 获取指定 sheet
worksheet = workbook.Sheets('Benchmark Tool')
# 获取插入对象
Embedded_object = worksheet.OLEObjects()
# 遍历 Excel 中的数据
for i in df.values.tolist():
for png_file in png_files:
if i[0] in png_file:
fj_name = 'D:/ISTRESSTOOL/IGPU Caps Viewer/benchmark/' + png_file
print(i[0], fj_name)
# 添加插入对象
Embedded_object.Add(ClassType=None, Filename=fj_name, Link=False, DisplayAsIcon=True, Width=18, Height=50)
# 更新插入对象
Embedded_object = worksheet.OLEObjects()
print('数量----', Embedded_object.Count)
# 设置插入对象的位置和行高
obj = Embedded_object.Item(Embedded_object.Count)
obj.Left = worksheet.Cells(obj.TopLeftCell.Row, 8).Left + 10
obj.Top = worksheet.Cells(obj.TopLeftCell.Row, 8).Top + 10
worksheet.Rows(obj.TopLeftCell.Row).RowHeight = 53
# 设置列宽
worksheet.Columns(8).ColumnWidth = 75
# 关闭 Excel 文件
workbook.Close()
代码解释:
- 获取当前工作目录: 使用
os.getcwd()获取当前工作目录的绝对路径,用于方便地引用文件。 - 读取 Excel 数据: 使用
pd.read_excel()读取 Excel 文件中的数据,并指定要读取的 sheet 和列。dtype=str将读取的数据转换为字符串类型,keep_default_na=''保留空单元格的值为空字符串。 - 获取 .png 文件: 使用
os.listdir()和列表推导式获取指定文件夹下的所有 .png 文件。 - 创建 Excel 对象: 使用
win32com.client.Dispatch('Excel.Application')创建 Excel 对象,并设置Visible属性为 0,在后台运行 Excel。 - 打开 Excel 文件: 使用
xlApp.Workbooks.Open()方法打开 Excel 文件。 - 获取指定 sheet: 使用
workbook.Sheets()方法获取指定的 sheet。 - 获取插入对象: 使用
worksheet.OLEObjects()方法获取插入对象。 - 遍历数据和 .png 文件: 遍历 Excel 中的数据和所有 .png 文件,如果数据中的值在 .png 文件名中,就将对应的 .png 文件插入到 Excel 中。
- 添加插入对象: 使用
Embedded_object.Add()方法添加插入对象,设置插入对象的参数。 - 更新插入对象: 使用
worksheet.OLEObjects()方法更新插入对象。 - 设置插入对象的位置和行高: 使用
obj.Left、obj.Top和worksheet.Rows().RowHeight方法设置插入对象的位置和行高。 - 关闭 Excel 文件: 使用
workbook.Close()方法关闭 Excel 文件。
常见错误和解决方法:
- 代码报错
Traceback (most recent call last):...pywintypes.com_error: (-2147352567, '发生意外。', ...): 这通常是因为代码中打开的 Excel 文件路径和文件名不正确,请仔细检查代码中 Excel 文件的路径和文件名是否正确,确保路径中使用了正确的反斜杠\或者正斜杠/,并且文件名大小写一致。 - 安装依赖库: 确保已安装
pandas和pywin32库,可以使用 pip 安装:pip install pandas pywin32
最佳实践:
- 使用绝对路径而不是相对路径,以避免由于文件位置变化导致的错误。
- 使用变量存储文件路径和文件名,方便代码修改和维护。
- 在代码中添加错误处理,例如使用
try...except块捕获异常并打印错误信息,方便排查错误。 - 使用代码注释解释代码的功能和逻辑,方便理解和维护。
希望本指南能够帮助您顺利地将图片插入 Excel 文件中!
原文地址: http://www.cveoy.top/t/topic/quuC 著作权归作者所有。请勿转载和采集!