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

如何通过Office Add-ins从Excel启动Word并实现一键数据传输?

从Excel Office Add-ins一键触发Word模板并同步数据的解决方案

针对Office沙箱限制无法直接从Excel加载项启动Word的问题,以下是几个可落地的替代方案,实现一键完成Excel数据到Word模板的传输:

方案一:深度链接+Word模板加载项自动同步

利用Office的深度链接启动Word模板,配合绑定到模板的Word加载项自动读取共享存储的数据,实现一键操作:

  • 配置Word模板专属加载项:在加载项manifest中设置Hosts仅包含Word,且设置加载项仅在打开该模板时激活。
  • Excel端操作:点击按钮时先读取Excel数据,用Office.storage.setItem存入跨加载项共享存储,再生成Word模板的深度链接(格式:ms-word:nft|u|file:///[转义后的本地模板路径]),通过window.open()启动Word并打开模板。
  • Word端自动填充:模板加载项启动后,立即调用Office.storage.getItem读取数据,自动填充到模板指定位置,完成后清除临时存储数据。

关键代码示例:
Excel端存储并启动Word:

async function exportToWord() {
  // 读取Excel指定区域数据
  const data = await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getActiveWorksheet();
    const range = sheet.getRange("A1:B5");
    range.load("values");
    await context.sync();
    return range.values;
  });

  // 存入共享存储
  await Office.storage.setItem("excelExportData", JSON.stringify(data));

  // 生成转义后的模板路径与深度链接
  const templatePath = "C:/Users/xxx/Documents/业务模板.docx";
  const encodedPath = encodeURIComponent(templatePath);
  const deepLink = `ms-word:nft|u|file:///${encodedPath}`;

  // 启动Word模板
  window.open(deepLink);
}

Word端自动读取填充:

async function loadAndFillData() {
  const dataStr = await Office.storage.getItem("excelExportData");
  if (!dataStr) return;
  const data = JSON.parse(dataStr);

  // 填充到Word模板的表格中
  await Word.run(async (context) => {
    const table = context.document.tables.getFirst();
    for (let i = 0; i < data.length; i++) {
      for (let j = 0; j < data[i].length; j++) {
        table.getCell(i+1, j+1).body.insertText(data[i][j], Word.InsertLocation.replace);
      }
    }
    await context.sync();
  });

  // 清理临时数据
  await Office.storage.removeItem("excelExportData");
}

// 加载项启动时自动执行
Office.onReady(() => {
  loadAndFillData();
});

方案二:Power Automate桌面流配合触发

借助Power Automate桌面流绕过沙箱限制,直接操作本地文件:

  • 制作桌面流:配置流的逻辑为接收Excel数据、打开指定Word模板、将数据填充到对应位置。
  • Excel加载项触发:将Excel数据整理为JSON格式,通过Office.context.ui.displayDialogAsync打开本地触发页面,调用Power Automate桌面流的触发接口,一键执行整个流程。
  • 优势:无需开发Word加载项,适合非复杂数据传输场景,仅需用户配置好流并安装Power Automate桌面版。

方案三:生成绑定内容控件的Word文档

直接在Excel加载项中生成填充好的Word文档,无需启动Word模板:

  • 预处理Word模板:在模板中给需要填充的位置添加带唯一标签的内容控件,另存为Word XML格式,提取XML结构。
  • Excel端生成文档:读取Excel数据后,替换XML中对应内容控件的占位符,用JSZip库将修改后的XML打包为docx文件,提示用户保存到指定路径。
  • 适用场景:不需要用户手动打开模板,直接生成最终文档的需求。

注意事项

  • 深度链接的模板路径必须为本地绝对路径,且需在Excel加载项的权限配置中开启ReadWriteDocument权限。
  • Office.storage的临时数据会在清除Office缓存时丢失,请勿存储重要数据。
  • Power Automate桌面流需确保用户已授权流的外部触发权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:45:55