使用 Python 的 win32com 库向 Excel 文件插入附件时,可能会遇到错误:'不能插入对象。'。这个错误通常是由于以下原因导致的:

  1. Excel 文件已被其他进程锁定,无法进行修改。 请确认没有其他程序正在访问该文件,并尝试重新运行代码。

  2. Excel 中的工作表或单元格名称不正确。 请确保 sheet_namecell 参数的值正确。

  3. 您的 Excel 版本不支持该操作。 请确保您的 Excel 版本与代码兼容。

如果尝试上述解决方案后仍然出现错误,请提供更多详细信息,以便更好地帮助您解决问题。

以下是示例代码:

import win32com.client

def insert_attachment(excel_path, sheet_name, cell, attachment_path):
    xlApp = win32com.client.Dispatch('Excel.Application')
    xlApp.Visible = 0
    workbook = xlApp.Workbooks.Open(excel_path)
    worksheet = workbook.Sheets(sheet_name)
    embedded_object = worksheet.OLEObjects()
    for obj in embedded_object:
        obj.Delete()  # 删除现有的附件,确保只有一个附件存在
    embedded_object.Add(ClassType=None, Filename=attachment_path, Link=False, DisplayAsIcon=True,
                        Left=cell.Left + 10, Top=cell.Top + 10)
    worksheet.Rows(cell.Row).RowHeight = 53
    worksheet.Columns(cell.Column).ColumnWidth = 75
    workbook.Save()
    workbook.Close()
    xlApp.Quit()

excel_path = r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\2.xlsx'
 sheet_name = 'Benchmark Tool'
 attachment_path = r'D:\STRESSTOOL\GPU_Caps_Viewer\benchmark\1.png'
 xlApp = win32com.client.Dispatch('Excel.Application')
 workbook = xlApp.Workbooks.Open(excel_path)
 worksheet = workbook.Sheets(sheet_name)
 cell = worksheet.Range('H8')
 insert_attachment(excel_path, sheet_name, cell, attachment_path)
Python 使用 win32com 插入 Excel 附件报错:'不能插入对象。'

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

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