这是一个使用 Python 操作 Excel 的代码示例,用于将指定文件夹下的 .png 文件插入到 Excel 文件中。

在运行代码之前,请确保已安装 pandaspywin32 库。另外,请仔细检查 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()

代码解释:

  1. 获取当前工作目录: 使用 os.getcwd() 获取当前工作目录的绝对路径,用于方便地引用文件。
  2. 读取 Excel 数据: 使用 pd.read_excel() 读取 Excel 文件中的数据,并指定要读取的 sheet 和列。dtype=str 将读取的数据转换为字符串类型,keep_default_na='' 保留空单元格的值为空字符串。
  3. 获取 .png 文件: 使用 os.listdir() 和列表推导式获取指定文件夹下的所有 .png 文件。
  4. 创建 Excel 对象: 使用 win32com.client.Dispatch('Excel.Application') 创建 Excel 对象,并设置 Visible 属性为 0,在后台运行 Excel。
  5. 打开 Excel 文件: 使用 xlApp.Workbooks.Open() 方法打开 Excel 文件。
  6. 获取指定 sheet: 使用 workbook.Sheets() 方法获取指定的 sheet。
  7. 获取插入对象: 使用 worksheet.OLEObjects() 方法获取插入对象。
  8. 遍历数据和 .png 文件: 遍历 Excel 中的数据和所有 .png 文件,如果数据中的值在 .png 文件名中,就将对应的 .png 文件插入到 Excel 中。
  9. 添加插入对象: 使用 Embedded_object.Add() 方法添加插入对象,设置插入对象的参数。
  10. 更新插入对象: 使用 worksheet.OLEObjects() 方法更新插入对象。
  11. 设置插入对象的位置和行高: 使用 obj.Leftobj.Topworksheet.Rows().RowHeight 方法设置插入对象的位置和行高。
  12. 关闭 Excel 文件: 使用 workbook.Close() 方法关闭 Excel 文件。

常见错误和解决方法:

  • 代码报错 Traceback (most recent call last):...pywintypes.com_error: (-2147352567, '发生意外。', ...): 这通常是因为代码中打开的 Excel 文件路径和文件名不正确,请仔细检查代码中 Excel 文件的路径和文件名是否正确,确保路径中使用了正确的反斜杠 \ 或者正斜杠 /,并且文件名大小写一致。
  • 安装依赖库: 确保已安装 pandaspywin32 库,可以使用 pip 安装: pip install pandas pywin32

最佳实践:

  • 使用绝对路径而不是相对路径,以避免由于文件位置变化导致的错误。
  • 使用变量存储文件路径和文件名,方便代码修改和维护。
  • 在代码中添加错误处理,例如使用 try...except 块捕获异常并打印错误信息,方便排查错误。
  • 使用代码注释解释代码的功能和逻辑,方便理解和维护。

希望本指南能够帮助您顺利地将图片插入 Excel 文件中!

使用 Python 将图片插入 Excel:完整指南和错误解决

原文地址: http://www.cveoy.top/t/topic/quuC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录