使用Python向含VBA的Excel写入图片时出现'Cell'无'_id'属性错误
问题分析与解决
这段代码存在两个明确问题,直接导致了报错:
add_image方法参数使用错误sheet_InputData_Overview.add_image(ws.cell(2,28))完全误用了openpyxl的API规则。add_image方法的首个参数必须是你创建的Image对象,而非Cell对象。要指定图片放置位置,需要给Image对象设置anchor属性,或是在调用add_image时传入位置参数。未定义变量
ws
代码里从未定义过ws这个变量,你实际使用的工作表对象是sheet_InputData_Overview,此处属于变量名书写错误。
修正后的代码如下:
wb = openpyxl.load_workbook('Output_Report_v16.xlsm', read_only=False, keep_vba=True) sheets = wb.sheetnames sheet_InputData_Overview = wb[sheets[7]] img = openpyxl.drawing.image.Image('Eink_Liq.png') # 设置图片锚点为第2行第28列的单元格 img.anchor = sheet_InputData_Overview.cell(2,28).coordinate sheet_InputData_Overview.add_image(img) wb.save('Output_Report_v16.xlsm')
补充说明:你设置的keep_vba=True是正确的,保存后的xlsm文件会保留原有VBA代码,不会被修改或删除,符合你的需求。
内容的提问来源于stack exchange,提问作者Bsleon
相关产品推荐
相关产品推荐

