python Excel添加Excel附件

发布时间 2023-10-07 21:23:54作者: 狂自私
# """
# 插入附件
import win32com.client 

if __name__ == "__main__":
    filename = r"23年09月.xlsx"
    xlApp = win32com.client.Dispatch('Excel.Application')
    xlApp.Visible = 0   #0不可见,1可见
    workbook = xlApp.Workbooks.Open(filename)
    附件数量=0
    for worksheet_index in range(1,workbook.Sheets.Count+1):
        worksheet = workbook.Sheets(worksheet_index)
        G=2 #附件所在的行数    
        Embedded_object = worksheet.OLEObjects()
        while G<100:
            附件名=worksheet.Cells(G, 7).Value
            if(None == 附件名):
                if(None != worksheet.Cells(G+1, 1).Value):
                    #没有添加过附件,这里,忽略
                    G+=7    #有6个内容加上本身
                    continue
                else:
                    #这个sheet没有内容了
                    break
            file_location = r"{}".format(附件名)    #运行前需要修改
            left_index=worksheet.Cells(G, 7).Left
            top_index=worksheet.Cells(G, 7).Top
            Embedded_object.Add(ClassType=None, Filename=file_location, Link=False, DisplayAsIcon=True,IconLabel=附件名,Left=left_index,Top = top_index,IconFileName=r"C:\Windows\Installer\{90160000-000F-0000-1000-0000000FF1CE}\xlicons.exe",IconIndex=0)   #IconFileName参数和时必须的,不确定值的时候,请使用Excel的录制宏功能获取,IconIndex=0是固定的
            附件数量+=1
            print("附件数量={}".format(附件数量))
            G+=7
            
    workbook.Save()
    xlApp.Quit()

这里是以添加Excel附件为例,其中的IconFileName参数值是比较重要的,可以获得最佳的外观,建议先使用录制宏功能获取下对应的值在添加进来。