基于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
相关产品推荐
相关产品推荐

