如何更改图像的位置:使用 openpyxl 在 Excel 中“移动和调整单元格大小”

Ale*_*aPM 5 excel image openpyxl

在此处输入图片说明

如何使用 Openpyxl 使用 Python 选择此图像属性?我需要这个,所以如果我过滤 Excel 文档,图像也会被过滤。

我调用了一个我做过的函数:insert_image(ws, url, cell_picture, 64, 66) ws 是我添加的工作表 url 是图像 cell_picture 单元格 64 和 66 的宽度和高度

我的功能是这样的:

def insert_image(ws, image_url, cell, width = 101, height= 129):

  # load image
    image_path = "image.jpg"
    try:
        urllib.request.urlretrieve(image_url, image_path)
        img = Image.open(image_path)
    except:
        print ('Picture ' + image_url + ' not found')
        return
    max_width, max_height = width , height

    cell_ratio = float(max_height) / max_width
    img_ratio = float(img.size[1])/img.size[0]

    if (cell_ratio<img_ratio):
        hpercent = (max_height/float(img.size[1]))
        wsize = int((float(img.size[0])*float(hpercent)))
        img = img.resize((wsize,max_height-1), PIL.Image.ANTIALIAS)
    else:
        wpercent = (max_width/float(img.size[0]))
        hsize = int((float(img.size[1])*float(wpercent)))
        img = img.resize((max_width,hsize), PIL.Image.ANTIALIAS)

    # remove image
    if os.path.isfile(image_path): os.remove(image_path)
    # Create openpyxl img instace
    op_img = imge(img)

    # Create image anchor
    op_img.anchor(cell, anchortype='oneCell')
    op_img.drawing.top = 1
    #op_img.drawing.left = 1

    # Add image to cell
    ws.add_image(op_img)
    #ws.insert_image(cell,op_img,{'positioning':1})

    # print ('Image inserted')

    return
Run Code Online (Sandbox Code Playgroud)

小智 1

TwoCellAnchor(editAs="twoCell", ...)

示例代码:

# *- coding: utf-8 -*-
from openpyxl import Workbook
from openpyxl.drawing.image import Image
from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchor


wb = Workbook()
ws = wb.active

ws.column_dimensions["A"].width = 18
ws.row_dimensions[1].height = 140
col, row = 0, 0
offset = 30000
img = Image("test.jpg")
_from = AnchorMarker(
    col=col,
    row=row,
    colOff=offset,
    rowOff=offset,
)
to = AnchorMarker(
    col=col + 1,
    row=row + 1,
    colOff=-offset,
    rowOff=-offset,
)
img.anchor = TwoCellAnchor(editAs="twoCell", _from=_from, to=to)
ws.add_image(img)
wb.save("test.xlsx")
Run Code Online (Sandbox Code Playgroud)