簡體   English   中英

使用Sharepoint文檔庫和Microsoft Graph API處理Excel文件

[英]Work with Excel file using Sharepoint document library with Microsoft Graph API

我下載並自定義了該項目asp mvc todo示例 一切正常,onedrive excel文件/項目沒有任何問題。 但是我只能使用Office 365共享點來在線執行此操作。 我可以使用服務點獲取文件ID,如下所示:

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

但是我不確定如何使用Sharepoint定義工作簿端點URL以更新/處理相同的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);
    }

現在應該可以使用了。 例如,這是一條可行的路徑:

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

您始終可以嘗試用ID替換路徑,以查看路徑是否有效(兩者均應實際運行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM