使用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
相关产品推荐
相关产品推荐

