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

使用Office Scripts获取Excel图片行列位置并生成Base64字符串

Office Scripts实现Excel图片转Base64并匹配行号方案

核心实现逻辑

遍历工作表内所有图片形状,获取其所在行号完成重命名,将图片转为Base64字符串后写入同行的base64 text列,最终可直接读取该列数据对接外部数据源。

完整代码

function main(workbook: ExcelScript.Workbook) {
  // 获取当前活动工作表(可替换为指定工作表名称,如workbook.getWorksheet("Sheet1"))
  const worksheet = workbook.getActiveWorksheet();
  const shapes = worksheet.getShapes();
  
  // 定位"base64 text"列的索引(假设表头在第一行)
  const headerRange = worksheet.getRange("1:1");
  const base64ColumnIndex = headerRange.find("base64 text", {completeMatch: true, matchCase: false})?.getColumnIndex();
  
  if (!base64ColumnIndex) {
    console.error("未找到'base64 text'列,请检查表头");
    return;
  }

  // 处理所有图片形状
  shapes.forEach(shape => {
    // 仅处理图片类型的形状
    if (shape.getType() === ExcelScript.ShapeType.picture) {
      // 获取图片所在行号(Excel行号从1开始,getRowIndex返回0基索引,需+1)
      const rowNumber = shape.getTopLeftCell().getRowIndex() + 1;
      // 重命名图片
      shape.setName(`Picture ${rowNumber}`);
      
      // 生成Base64字符串并写入对应单元格
      const base64Str = shape.getImageAsBase64();
      const targetCell = worksheet.getCell(rowNumber - 1, base64ColumnIndex);
      targetCell.setValue(base64Str);
    }
  });

  console.log("图片重命名及Base64转换完成");
}

关键细节说明

  • 行号获取:通过shape.getTopLeftCell().getRowIndex()获取图片左上角单元格的0基索引,加1后得到Excel界面显示的行号。
  • 图片筛选:用shape.getType()判断形状类型,只处理图片,避免误操作文本框、图表等其他形状。
  • Base64转换:直接调用Office Scripts内置方法shape.getImageAsBase64()生成字符串,无需额外处理图片文件流。
  • 列定位:通过表头查找base64 text列的索引,无需硬编码列号,适配不同表格结构。

对接外部数据源

完成Base64写入后,可通过以下方式对接SharePoint、SQL Server等:

  • SharePoint:读取base64 text列数据,通过Power Automate或Office Scripts同步到SharePoint列表的对应字段。
  • SQL Server:将Base64字符串作为文本类型数据,通过Power Automate或ADO.NET批量插入到SQL Server表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:57:11