如何通过MS Graph API从Excel模板文件创建Excel文件?
用MS Graph API从Excel模板(.xltm)生成常规Excel文件的解决方案
直接复制模板文件改扩展名肯定不行——.xltm模板的内部文件结构(比如Content_Types.xml里的类型定义、配置项)和.xlsx/.xlsm存在差异,单纯改扩展名会让Excel误判文件结构,导致文件损坏。
可以通过MS Graph API的Workbook SaveAs接口实现正确转换,这是官方支持的可靠方式,具体步骤如下:
步骤1:获取模板文件的Drive Item ID
先拿到你的.xltm模板在OneDrive/SharePoint中的Drive Item ID,同时确保你的应用已申请对应权限:OneDrive场景需Files.ReadWrite,SharePoint场景需Sites.ReadWrite.All。
步骤2:调用SaveAs接口生成目标文件
发送POST请求到对应API端点,指定新文件名和目标格式:
针对OneDrive个人/商业版
POST /me/drive/items/{template-item-id}/workbook/saveAs Content-Type: application/json
请求体示例(生成xlsm格式文件):
{ "fileName": "新生成的文件.xlsm", "saveAsOptions": "xlsm" }
针对SharePoint站点
POST /sites/{site-id}/drive/items/{template-item-id}/workbook/saveAs Content-Type: application/json
请求体示例(生成xlsx格式并指定保存到目标文件夹):
{ "fileName": "新生成的文件.xlsx", "saveAsOptions": "xlsx", "parentReference": { "id": "目标文件夹的Drive Item ID" } }
saveAsOptions的可选值对应:
- xlsx格式:
"xlsx" - xlsm格式:
"xlsm"
关键说明
这个接口由Microsoft Excel服务端处理文件转换,会自动调整模板的内部结构以匹配目标文件格式,生成的文件不会出现损坏问题。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

