Microsoftgraph Excel计算而不修改文件

时间:2017-01-26 15:36:36

标签: excel microsoft-graph

我有一个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')

显然这不是理想的解决方案,但我在文档中找不到任何更简单的解决方案。 反正有没有改进这个过程?

1 个答案:

答案 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文件的副本以分配负载。

相关问题