如何从 Excel Office Add-in 打开 Word 模板并传递数据?
结论
仅靠 Excel Office Add-in,通常无法可靠地直接启动 Word 桌面应用并指定打开某个模板。Add-in 运行在 Office 宿主提供的隔离环境中。链接是在浏览器、Word 网页版还是桌面应用中打开,会受宿主、浏览器和组织策略影响。因此,这种方式难以作为适用于不同环境的单击流程。
可以把模板放在 SharePoint 或 OneDrive 等可访问的位置,通过链接打开,再由 Word Add-in 读取待填数据。如果必须使用桌面版 Word,通常还需要用户确认或手动打开,无法保证整个过程不出现提示。
可选实现方式
方案一:通过模板链接打开 Word
将 Word 模板存放在用户和两个 Add-in 都有权限访问的位置,再从 Excel Add-in 提供模板链接。链接最终会在浏览器、Word 网页版还是桌面应用中打开,取决于链接类型、Office 配置和用户环境,需要在目标环境中验证。
这个方案改动较小,但无法保证用户点击一次就能在桌面版 Word 中打开模板并开始编辑。
方案二:通过共享服务传递数据
如果 Excel 和 Word 的 Add-in 分别运行,可以先将待填数据存到双方都能访问的位置,例如业务后端或受控的共享存储。Excel Add-in 保存数据并生成一次性标识。用户打开模板后,Word Add-in 根据这个标识读取数据并填入文档。
流程如下:
- Excel Add-in 收集需要复制的数据。
- 将数据和必要的关联标识保存到双方都能访问的位置。
- 打开或提示用户打开 Word 模板,并传递关联标识。
- Word Add-in 根据标识读取数据并填入文档。
- 完成后清理临时数据,避免重复使用或长期保留。
这种方式可以减少手动复制,但能否免去额外确认,仍取决于模板的打开方式和目标 Office 环境。
方案三:继续使用临时存储,但先确认是否共享
问题中提到,目前使用 Office.storage.setItem 暂存数据,再由 Word 读取。要让这种方式可靠运行,需要确认两端使用的具体存储 API,以及 Excel 和 Word 的 Add-in 运行环境是否共享该存储。两个宿主都能调用存储接口,不代表它们能读写同一份数据。如果运行环境不共享,就需要改用双方都能访问的后端,或其他明确支持的共享机制。
实施前需要确认
- 模板存放在哪里,Excel 和 Word Add-in 是否都有访问权限。
- 用户使用桌面版 Office、Office 网页版,还是两者混用。
Office.storage.setItem实际来自哪个 API,以及 Excel 和 Word 的运行环境是否共享该存储。- 企业策略、浏览器弹窗设置和登录状态是否会影响打开链接或读取数据。
- 临时数据的有效期和清理方式,以及其中是否包含敏感信息。
如果业务要求点击一次后自动启动桌面 Word、打开指定模板并填入数据,应先在目标 Office 版本和部署环境中做原型验证。Office Add-in 的沙箱和宿主策略可能会限制这一流程。较可控的做法是由用户打开模板,再让 Word Add-in 读取并填入数据。
备注:内容仅供参考。
