如何使用python(Anaconda)在指定的单元格位置将图片插入Excel中使用vba

时间:2016-12-22 15:45:28

标签: python excel vba anaconda win32com

我尝试将此链接与vba code一起使用 但是在Python中它不起作用。

import win32com.client    
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(r'C:/Users/Home/Desktop/expdata.xlsx')
wb.Worksheets("Report").Activate # выбор активного листа
sheet = wb.ActiveSheet
obj1=wb.ActiveSheet.Pictures.Insert(r'C:\Users\Home\Desktop\picture.jpg')
obj1.ShapeRange
obj1.ShapeRange.LockAspectRatio = msoTrue
obj1.ShapeRange.Width = 75
obj1.ShapeRange.Height = 100
obj1.Left = xlApp.ActiveSheet.Cells(i, 20).Left
obj1.Top = xlApp.ActiveSheet.Cells(i, 20).Top
obj1.Placement = 1
obj1.PrintObject = True
wb.save
wb.Close
Excel.Quit()
  

AttributeError Traceback(最近一次调用最后一次)    in()         9张。细胞(20,20)。选择        10#obj1 = sheet.Shapes.AddPicture(r'C:/Users/Home/Desktop/picture.jpg',False,True,10,3,100,100)   ---> 11 obj1 = wb.ActiveSheet.Pictures.Insert(r'C:/Users/Home/Desktop/picture.jpg')        12 obj1.ShapeRange        13 obj1.ShapeRange.LockAspectRatio = msoTrue

     

AttributeError:'function'对象没有属性'Insert'

2 个答案:

答案 0 :(得分:3)

除非你绝对需要使用VBA,否则这种事情可以通过Python使用xlsxwriter来完成:http://xlsxwriter.readthedocs.io/example_images.html

import xlsxwriter

# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('images.xlsx')
worksheet = workbook.add_worksheet()
worksheet.insert_image('B2', 'python.png')

答案 1 :(得分:0)

我发现此代码有效。

import win32com.client    
pic_path=r'file_path.png'
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(r'C:/Users/Home/Desktop/expdata.xlsx')
ws =wb.Worksheets("Report")
left=ws.Cells(1,required_coloumn).Left
top=ws.Cells(required_row,1).Top
width=required_width
height=required_height
ws.Shapes.AddPicture(pic_path,LinkToFile=False, SaveWithDocument=True,left, top,width,height)
wb.save()
wb.Close()
Excel.Quit()