C# 如何使用Microsoft graph API在excel单元格中添加公式?

C# 如何使用Microsoft graph API在excel单元格中添加公式?,c#,excel,microsoft-graph-api,C#,Excel,Microsoft Graph Api,我正在尝试使用Microsoft Graph的功能将内容添加到Excel中的单元格中。我可以使用PATCH方法添加内容,但当我尝试添加公式时,它的行为与公式不同。如果我传递类似于'formulas':'=sum(2+2)的内容,那么它的行为就不符合它的要求 我得到的结果是: 这可行吗 这是我的密码: //Set up workbook and worksheet endpoints var workbookEndpoint = "https://graph.microsoft.com/v1.0

我正在尝试使用Microsoft Graph的功能将内容添加到Excel中的单元格中。我可以使用
PATCH
方法添加内容,但当我尝试添加公式时,它的行为与公式不同。如果我传递类似于
'formulas':'=sum(2+2)
的内容,那么它的行为就不符合它的要求

我得到的结果是:

这可行吗

这是我的密码:

//Set up workbook and worksheet endpoints
var workbookEndpoint = "https://graph.microsoft.com/v1.0/me/drive/items/" +
    fileId + "/workbook";

var worksheetsEndpoint = workbookEndpoint + "/worksheets";

var patchMethod = new HttpMethod("PATCH");

var summaryTableRowJson = "{" +
    "'formulas': '=sum(2+2)'" +
    "}";

var colNamePatchBody = new StringContent(summaryTableRowJson);
colNamePatchBody.Headers.Clear();
colNamePatchBody.Headers.Add("Content-Type", "application/json");

var colNameRequestMessage = new HttpRequestMessage(patchMethod, worksheetsEndpoint +
    "('" + worksheetName + "')/range(address='Sheet1!B2')")
{
    Content = colNamePatchBody
};

var colNameResponseMessage = await client.SendAsync(colNameRequestMessage);

您需要通过而不是
属性来传递:

{
  "formulas" : "=sum(2+2)"
}

你也应该考虑使用而不是滚动自己的原始HTTP调用。随着时间的推移,它将为你省去大量的头痛。它还产生了更干净的代码:

await graphClient.Me
    .Drive
    .Items["id"]
    .Workbook
    .Worksheets["Sheet1"]
    .Range("C12")
    .Request()
    .PatchAsync(new WorkbookRange()
    {
        Formulas = JArray.Parse(@"[['=2.2']]")
    });

我将值替换为公式。结果仍然是一样的。使用现有代码。否则我会尝试共享图形客户端库。您能提供一个您看到的实际结果的示例吗?我理解它不是“像公式一样运行”,但这并不能真正解释它是如何运行的,也不能解释你看到了什么。我已经添加了一个有问题的结果剪报。我想再问一件事,graph client library是否也支持sahrepoint和sharepoint子网站?SDK支持Microsoft graph v1.0中的所有内容(除了几个真正边缘的情况)。它还支持直接调用HTTP客户端(这可以让您了解1-2种边缘情况)。但我得到的结果与我的自定义代码相同。您确实通过了“=2.2”作为公式值。不应该是“=2+2”吗?我厌倦了“=2.2”和“=2+2”。结果和以前一样。你能确保你的截图反映了你运行的代码吗?我有点担心您的屏幕截图显示的是
B2
,但您的代码正在设置
C12
。在我进入一个兔子洞之前,我只想确定你的代码和屏幕截图都是正确的。我更新了我的问题并剪掉了。