如何使用Python win32com在Excel指定行列嵌入PDF对象?
如何用win32com将PDF嵌入Excel指定单元格
嘿,我懂你的困扰——用Embedded_object.Add()的时候,PDF总是默认钉在A1单元格,复制粘贴的方法又会连带A1的多余内容,确实不太好用。其实问题出在你用的Left和Top参数是相对于工作表左上角的绝对像素值,不是单元格的行列坐标。要精准嵌入到指定单元格,我们可以先获取目标单元格的位置属性,再传给Add方法就行!
解决方案:获取目标单元格的位置参数
你只需要先拿到目标单元格的Left、Top、Width、Height这几个属性,把它们代入Embedded_object.Add()的对应参数里,就能直接把PDF嵌入到指定单元格了。
给你一个具体的代码示例:
import win32com.client as win32 # 初始化Excel应用 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = True workbook = excel.Workbooks.Add() worksheet = workbook.Worksheets(1) # 指定要嵌入的PDF文件路径 pdf_file_path = r"C:\Your_PDF_File.pdf" # 获取目标单元格(比如C2)的位置和尺寸信息 target_cell = worksheet.Range("C2") cell_left = target_cell.Left cell_top = target_cell.Top cell_width = target_cell.Width cell_height = target_cell.Height # 嵌入PDF到指定单元格 embedded_object = worksheet.Shapes.AddOLEObject( ClassType=None, Filename=pdf_file_path, Link=False, DisplayAsIcon=True, Left=cell_left, Top=cell_top, Width=cell_width, Height=cell_height )
小提示:这里用的
Shapes.AddOLEObject()和你原来的Embedded_object.Add()是同一个功能,只是win32com里的调用名称有这个细微差异,本质完全一致。
为什么之前的复制粘贴方法不可行?
你尝试的复制A1再粘贴到C2的方式,会把A1单元格的所有内容(包括单元格值、格式)一起复制过去,这显然不是我们要的效果——我们只需要移动嵌入的PDF对象,而非单元格本身的内容。上面的方法直接在目标位置创建嵌入对象,完美避开了这个问题。
内容的提问来源于stack exchange,提问作者Dantuzzo
相关产品推荐
相关产品推荐

