Python: вставка объекта в Excel в определенной строке и столбце с Win32com - PullRequest
0 голосов
/ 18 мая 2018

Я использую 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, так что на самом деле это еще не решение

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете указать ячейку назначения, а затем передать эти значения свойствам Left и Top OLEObject, например:

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()
0 голосов
/ 19 мая 2018

Хорошо, я думаю, что нашел решение:

#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()
...