You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Office Script将URL图片添加至指定单元格

解决Office Script中二维码对齐G1单元格左上角的问题

要让二维码左上角对齐G1单元格,只需在添加图片后,获取G1单元格的坐标并赋值给图片的位置属性即可。修改后的完整代码如下:

async function main(workbook: ExcelScript.Workbook) {
    // 获取二维码图片资源
    const link ="https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=Samundra";
    const response = await fetch(link);
    const data = await response.arrayBuffer();
    const image = convertToBase64(data);

    // 获取目标工作表
    const worksheet = workbook.getWorksheet("Sheet1");
    // 添加二维码图片并获取图片对象
    const qrImage = worksheet.addImage(image);
    // 获取G1单元格的左上角坐标
    const targetCell = worksheet.getRange("G1");
    const cellTop = targetCell.getTop();
    const cellLeft = targetCell.getLeft();

    // 设置图片位置与G1单元格左上角对齐
    qrImage.setTop(cellTop);
    qrImage.setLeft(cellLeft);
}

function convertToBase64(input: ArrayBuffer) {
    const uInt8Array = new Uint8Array(input);
    const count = uInt8Array.length;
    const charCodeArray = new Array(count) as string[];
  
    // 循环转换字节为字符(修正原索引越界问题)
    for (let i = count - 1; i >= 0; i--) { 
        charCodeArray[i] = String.fromCharCode(uInt8Array[i]);
    }

    return btoa(charCodeArray.join(''));
}

关键修改说明

  • 捕获addImage返回的Shape对象,用于后续位置调整
  • 通过getRange("G1")定位目标单元格,调用getTop()和getLeft()获取单元格左上角的坐标值
  • 使用setTop()和setLeft()将二维码图片的位置与单元格坐标绑定,实现对齐效果
  • 修正了convertToBase64函数中的循环索引问题,避免越界访问导致的转换错误

内容的提问来源于stack exchange,提问作者Samundra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:47:19