我无法更新Excel工作表中的一些单元格。 PATCH
请求通过了,一切看起来都很好,但是当我打开文档时,它没有更新。
excel文件托管在SharePoint中,而不是OneDrive中。
我正在通过Graph explorer使用Microsoft Graph,并且可以读取相关单元格:
/v1.0/drives/{id}/list/items/{id}/driveItem/workbook/worksheets/{id}/range(address='B2:B3')
写入请求返回成功,但未进行任何更改
PATCH https://graph.microsoft.com/v1.0/drives/{id}/list/items/{id}/driveItem/workbook/worksheets/{id}/range(address='B2:B3')
{
"values": [["foo bar"], ["hello world"]]
}
响应(200 OK)(省略了一些敏感字段,为简洁起见,省略了一些内容
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#workbookRange",
"@odata.type": "#microsoft.graph.workbookRange",
"columnCount": 1,
"cellCount": 2,
"columnHidden": false,
"rowHidden": false,
"numberFormat": [["General"], ["General"]],
"columnIndex": 1,
"text": [["foo bar"], ["hello world"]],
"hidden": false,
"rowCount": 2,
"rowIndex": 1,
"valueTypes": [["String"], ["String"]],
"values": [["foo bar"], ["hello world"]]
}
这是我期望的响应,但是当我打开Excel文档时,单元格不会更新。
我也尝试使用workbook-session
,但无济于事
通过
创建会话http
POST https://graph.microsoft.com/v1.0/drives/{id}/list/items/{id}/driveItem/workbook/createSession
{
"persistChanges": true
}
复制workbook-session-id
。整个过程-太疯狂了!
workbook-session-id
标头添加到上一个PATCH
请求并发送。POST https://graph.microsoft.com/v1.0/drives/{drive-id}/list/items/{item-id}/driveItem/workbook/closeSession
我还发现文档有些误导。 Update Range doc中说
可选请求标头
Workbook-Session-Id (工作簿会话ID),用于确定更改是否持久化。可选。
建议如果不使用更改,则不会保存。但是session docs说
注意:不需要会话标题即可使用Excel API。 但是,我们建议您使用会话标头来改进 性能。如果您不使用会话标头,则在 API调用 保留在文件中。
那为什么不坚持呢?
答案 0 :(得分:1)
所以问题在于Excel文件具有宏。
该调用适用于没有宏的.xlsm
文件。令人遗憾的是,该文件是带有宏的.xlsm
文件。