2017-08-16 108 views
2

我下载并定制了此项目asp mvc todo sample。这工作正常,没有任何与onedrive excel文件/项目的问题。但我必须仅使用Office 365 Sharepoint在线来完成此操作。 我能够使用服务点如下得到文件ID:使用Microsoft Graph API使用Sharepoint文档库处理Excel文件

var serviceEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items"; 

但我不知道我应该如何定义工作簿终点URL与SharePoint更新/操作同一个Excel文件中的数据。如下当前工作簿终点URL(没有工作):

var workbookEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items/" + fileId + "/workbook"; 

我的完整方法在SharePoint上的Excel文件更新单元格的值如下:

public static async Task UpdateExcelCellValue_Sharepoint(string accessToken, string cellAddress, string val) 
    { 
     string worksheetName = "Parameters"; 
     var serviceEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items"; 
     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
     var filesResponse = await client.GetAsync(serviceEndpoint + "?$select=name,id"); 
     if (filesResponse.IsSuccessStatusCode) 
     { 
      var filesContent = await filesResponse.Content.ReadAsStringAsync(); 
      JObject parsedResult = JObject.Parse(filesContent); 
      foreach (JObject file in parsedResult["value"]) 
      { 
       var name = (string)file["id"]; 
       if (name.Contains("173")) 
       { 
        fileId = (string)file["id"]; 
        break; 
       } 
      } 
     } 
     else 
     { 
      //Handle failed response 
     } 
     //Set up workbook and worksheet endpoints 
     var workbookEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items/" + fileId + "/workbook"; 
     var worksheetsEndpoint = workbookEndpoint + "/worksheets"; 
     var patchMethod = new HttpMethod("PATCH"); 
     var summaryTableRowJson = "{" + 
       "'values': '" + val + ".csv'" + 
      "}"; 
     var colNamePatchBody = new StringContent(summaryTableRowJson); 
     colNamePatchBody.Headers.Clear(); 
     colNamePatchBody.Headers.Add("Content-Type", "application/json"); 
     var colNameRequestMessage = new HttpRequestMessage(patchMethod, worksheetsEndpoint + 
      "('" + worksheetName + "')/range(address='Parameters!B2')") 
     { Content = colNamePatchBody }; 
     var colNameResponseMessage = await client.SendAsync(colNameRequestMessage); 
    } 

回答

0

这应该现在的工作。例如,下面是一个可行的路径:

https://graph.microsoft.com/beta/sites/{tenant-name}.sharepoint.com/lists/{id}/drive/root:/Book.xlsx:/workbook。这是其中一种可能性。

你总是可以尝试用ID替换路径,看看是否有效(两者都应该实际工作)。

相关问题