首页 > 解决方案 > Python win32com 将单词对象插入 Excel 文件

问题描述

Excel 错误:尝试将多个对象插入 Excel 文件时出现“文档未保存”。适用于 zip 和 .mpp 文件扩展名,但不适用于 .doc 和 .docx 文件类型。插入后,该对象会显示一个白色的未知文件图像,并简单地说 EMBED("Document","")。但是,当我手动插入这些文档时,我没有问题,它们显示为 Word 文档图标。有什么建议么?

import win32com.client as win32
xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = 1
wb = xl.Workbooks.Open('BlankTemplate.xlsx')  #New Excel file that is blank
xl.DisplayAlerts = False
ws = wb.Worksheets('Sheet1')
dest_cell = ws.Range('C5')
obj = ws.OLEObjects()

obj.Add(ClassType=None,Filename='Approval.zip',Link=False,DisplayAsIcon=False,Left=dest_cell.Left, Top=dest_cell.Top,Width=50,Height=50) obj.Add(ClassType= None,Filename='Final.docx',Link=False,DisplayAsIcon=True,Left=dest_cell.Left, Top=dest_cell.Top,Width=50,Height=50) obj.Add(ClassType=None,Filename='Release .doc',Link=False,DisplayAsIcon=True,Left=dest_cell.Left, Top=dest_cell.Top,Width=50,Height=50) obj.Add(ClassType=None,Filename='Platform.mpp',Link= False,DisplayAsIcon=False,Left=dest_cell.Left,Top=dest_cell.Top,Width=50,Height=50)

wb.SaveAs('ProjectDetailsAttachments.xlsx')
xl.DisplayAlerts = True
xl.Application.Quit()
xl.Visible = 0    

标签: pythonpython-3.xwin32com

解决方案


我想到了!!我录制了一个 Excel VBA 宏,以查看它用于插入 word 文档对象的内容,发现它们添加了一些额外的参数,一旦我添加了它们,它现在就可以工作了。

wordpath = 'C\\Program Files (x86)\\Microsoft Office\\Office 14\\WINWORD.EXE'
obj.Add(ClassType=None,Filename='Final.docx',Link=False,DisplayAsIcon=True, \ 
    IconFileName=wordpath,IconIndex=0,IconLabel=Final.docx \ 
    Left=dest_cell.Left, Top=dest_cell.Top,Width=50,Height=50) 

推荐阅读