我有一个Excel文件,可根据几个输入变量计算产品建议。要在Web应用程序中使用它并让用户定义输入变量,我想使用Microsoft图形Excel API,但无法确定是否可以在不实际复制的情况下进行计算。修改原始Excel文件。
目前我有一个解决方案,需要三个API调用来执行此操作:
POST .../drive/root:/filename.xlsx:/copy {name:'newfilename.xlsx'}
)PATCH .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A1') {values:'...'}
)GET .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A2')
)显然这不是理想的解决方案,但我在文档中找不到任何更简单的解决方案。 反正有没有改进这个过程?
答案 0 :(得分:1)
只要您的计算仅依赖于工作簿的现有状态(预定义模板,公式),您就可以在驱动器中拥有该文件的一个副本,并在不保存文档的情况下重复使用以进行多次计算。实质上,您可以将Excel文件用作计算引擎,并使用更新中的结果值。
为此,您需要在进行任何API调用以修改数据之前创建一个不保存更新的会话。
POST /{version}/me/drive/items/01CYZLFJGUJ7JHBSZDFZFL25KSZGQTVAUN/workbook/createSession
身体:
{ "persistChanges": false }
回应:
{
"@odata.context": "https://graph.microsoft.com/{version}/$metadata#microsoft.graph.sessionInfo",
"id": "{session-id}",
"persistChanges": false
}
生成的会话标头应附加在以下HTTP调用中。只要您这样做,它就不会保存您的更改。
下次调用时,添加HTTP标头:
workbook-session-id: {session-id}
注意:您可能会遇到给定文件的会话限制。如果您期望大量并发请求,那么您应该制作Excel文件的副本以分配负载。