2017-01-26 9 views
1

У меня есть файл Excel, который вычисляет совет продукта на основе нескольких входных переменных. Чтобы использовать это в веб-приложении и позволить пользователям определять входные переменные, я хочу использовать Microsoft Excel Excel API, но не могу понять, можно ли делать вычисления без фактического копирования &, изменяя исходный файл Excel.Расчет Microsoftg Excel без изменения файла

В настоящее время я получил обходной путь решения, которое требует три API вызовы, чтобы сделать это:

  • One скопировать исходный файл (POST .../drive/root:/filename.xlsx:/copy {name:'newfilename.xlsx'})
  • Один для обновления одного или нескольких ячеек (PATCH .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A1') {values:'...'})
  • One, чтобы получить расчетные значения (GET .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A2'))

Очевидно, что это не искомое решение, но я не могу найти проще решение в документации. Есть ли способ улучшить этот процесс?

ответ

1

Пока ваш расчет зависит только от существующего состояния (предварительно определенных шаблонов, формул) рабочей книги, вы можете просто иметь 1 копию файла на диске и повторно использовать для многих вычислений без сохранения документа , По сути, вы можете использовать файл Excel в качестве механизма calc и использовать полученные значения из обновлений.

Для этого вам необходимо создать сеанс, который не сохраняет обновления, перед тем как сделать любой вызов 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 для распределения нагрузки.

+0

Спасибо! Я полностью упустил эту часть в документации (https://graph.microsoft.io/en-us/docs/api-reference/beta/resources/excel). –