Python: 使用 win32com 在特定的行和列中将对象插入 excel
Python: Insert object into excel in a specific row and column with win32com
我正在使用 Python 3.5 和 win32com 通过以下方法将对象(.pdf 文件)插入 excel:
Embedded_object.Add(ClassType=None, Filename=file_loction, Link=False, DisplayAsIcon=True, Left=3, Top=0, Width=50, Height=50)
这很好用,但是它总是将对象嵌入到 A1 单元格中,有没有办法使用上述方法将对象嵌入到特定的行和列中?
编辑:
我还尝试了以下方法:
worksheet.Range('A1:A1').Copy()
worksheet.Paste(Destination=worksheet.Range('C2:C2'))
它把对象放在一个特定的单元格中,还有A1:A1中对象后面的内容,所以它还不是真正的解决方案
好的,我想我找到了解决方案:
#Create embedded object
Embedded_object = worksheet.OLEObjects()
#Add object to A1:A1 cell
Embedded_object.Add(ClassType=None, Filename=file_loction, Link=False, DisplayAsIcon=True, Left=3, Top=0, Width=50, Height=50)
#Assign object to obj variable
obj = Embedded_object.Item(1)
#Copy and paste object to specific cell
worksheet.OLEObjects(1).Copy()
worksheet.Paste(Destination=worksheet.Range('C2:C2'))
#Delete original object, so only the copied one is left
obj.Delete()
您可以指定目标单元格,然后将这些值传递给 OLEObject
的 Left
和 Top
属性,如下所示:
import win32com.client as win32
xl = win32.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Open('file_name')
ws = wb.Worksheets("sheet_name")
dest_cell = ws.Range("C2") #change to your wanted location
obj = ws.OLEObjects()
obj.Add(ClassType=None, Filename='file_path', Link=False, DisplayAsIcon=True, Left=dest_cell.Left, Top=dest_cell.Top, Width=50, Height=50)
wb.Save()
xl.Application.Quit()
我正在使用 Python 3.5 和 win32com 通过以下方法将对象(.pdf 文件)插入 excel:
Embedded_object.Add(ClassType=None, Filename=file_loction, Link=False, DisplayAsIcon=True, Left=3, Top=0, Width=50, Height=50)
这很好用,但是它总是将对象嵌入到 A1 单元格中,有没有办法使用上述方法将对象嵌入到特定的行和列中?
编辑:
我还尝试了以下方法:
worksheet.Range('A1:A1').Copy()
worksheet.Paste(Destination=worksheet.Range('C2:C2'))
它把对象放在一个特定的单元格中,还有A1:A1中对象后面的内容,所以它还不是真正的解决方案
好的,我想我找到了解决方案:
#Create embedded object
Embedded_object = worksheet.OLEObjects()
#Add object to A1:A1 cell
Embedded_object.Add(ClassType=None, Filename=file_loction, Link=False, DisplayAsIcon=True, Left=3, Top=0, Width=50, Height=50)
#Assign object to obj variable
obj = Embedded_object.Item(1)
#Copy and paste object to specific cell
worksheet.OLEObjects(1).Copy()
worksheet.Paste(Destination=worksheet.Range('C2:C2'))
#Delete original object, so only the copied one is left
obj.Delete()
您可以指定目标单元格,然后将这些值传递给 OLEObject
的 Left
和 Top
属性,如下所示:
import win32com.client as win32
xl = win32.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Open('file_name')
ws = wb.Worksheets("sheet_name")
dest_cell = ws.Range("C2") #change to your wanted location
obj = ws.OLEObjects()
obj.Add(ClassType=None, Filename='file_path', Link=False, DisplayAsIcon=True, Left=dest_cell.Left, Top=dest_cell.Top, Width=50, Height=50)
wb.Save()
xl.Application.Quit()