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

基于Yeoman开发的Word Add-in:API内容插入与文档展示问题

问题解答

1. 将API返回的字典值插入同名标题下方:完全可行

Word JavaScript API提供了完整的文档遍历、搜索和内容插入能力,你可以通过以下步骤实现需求:

  • 调用REST API获取字典数据,处理为键值对结构
  • 使用Word.run()包裹所有文档操作,确保异步操作的一致性
  • 遍历字典中的每个键,通过body.search()查找文档中匹配的标题文本(可指定匹配标题样式,避免普通文本干扰)
  • 找到匹配的标题段落后,定位到其下方位置,插入对应的值

示例代码:

async function insertContentUnderMatchingHeadings() {
  // 模拟API返回的字典数据
  const apiResponseData = {
    "项目背景": "本项目旨在解决企业数据孤岛问题...",
    "实施计划": "第一阶段完成需求调研,周期2周..."
  };

  await Word.run(async (context) => {
    const docBody = context.document.body;
    for (const [heading, content] of Object.entries(apiResponseData)) {
      // 搜索匹配的标题,开启大小写匹配确保精准度
      const searchMatches = docBody.search(heading, { matchCase: true });
      context.load(searchMatches);
      await context.sync();

      if (searchMatches.items.length > 0) {
        // 获取第一个匹配的标题段落,定位到下一行插入内容
        const targetHeading = searchMatches.items[0];
        const insertionParagraph = targetHeading.getNextParagraph();
        insertionParagraph.insertParagraph(content, Word.InsertLocation.start);
      }
    }
    await context.sync();
  }).catch(err => console.error('操作失败:', err));
}

如果需要更精准匹配标题(比如只匹配"Heading 1"样式的文本),可以在搜索选项中添加style参数:

const searchMatches = docBody.search(heading, { matchCase: true, style: "Heading 1" });

2. 在当前Word窗口展示API返回的Word文档对象:可行

如果API返回的是完整的Word文档(.docx格式),可以通过以下方式插入到当前窗口的文档中:

  • 将API返回的二进制文档数据转换为Base64格式
  • 使用Word API的insertFileFromBase64()方法,将文档插入到当前文档的指定位置(开头、末尾、指定段落前后等)

示例代码:

async function insertExternalWordDoc() {
  // 调用API获取Word文档二进制数据
  const apiResponse = await fetch('your-api-endpoint');
  const docBlob = await apiResponse.blob();

  // 转换为Base64编码
  const base64Doc = await new Promise(resolve => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result.split(',')[1]);
    reader.readAsDataURL(docBlob);
  });

  await Word.run(async (context) => {
    const docBody = context.document.body;
    // 将外部文档插入到当前文档末尾
    docBody.insertFileFromBase64(base64Doc, Word.InsertLocation.end);
    await context.sync();
  }).catch(err => console.error('插入文档失败:', err));
}

如果API返回的是OpenXML格式的文档片段,也可以使用insertOpenXml()方法直接插入对应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:12