Écriture de données dans un classeur Excel avec Microsoft GraphWrite data to an Excel workbook with Microsoft Graph

L’API REST Excel est un outil simple, indépendant de toute plateforme, qui est utilisé pour charger des informations dans un classeur Excel.The Excel REST API provides an easy, platform-agnostic way to upload information to an Excel workbook. Cette rubrique vous explique comment écrire des jeux de données simples dans un classeur Excel sur trois infrastructures de développement web : ASP.NET, Angular et React.This topic shows you how to write simple data sets to an Excel workbook on three web development frameworks: ASP.NET, Angular, and React. Vous pouvez consulter les exemples de code mentionnés dans cette rubrique en accédant aux exemples de démarrage Excel Microsoft Graph sur GitHub.You can look at the code samples featured in this topic by visiting the Microsoft Graph Excel starter samples on GitHub.

Remarque : les trois exemples écrivent des données dans un classeur Excel nommé demo.xlsx.Note: All three of the samples write data to an Excel workbook named demo.xlsx. Ce classeur vous est fourni pour pouvoir le charger dans votre propre espace OneDrive, mais vous pouvez également utiliser Microsoft Graph pour charger des fichiers dans OneDrive.They provide this workbook for you so that you can upload it to your own OneDrive, but you can also use Microsoft Graph to upload files to OneDrive. Si vous souhaitez connaître les appels REST nécessaires pour charger n’importe quel type de fichier dans votre dossier OneDrive racine, consultez l’exemple de liste de tâches ASP.NET de l’API REST Excel Microsoft Graph.If you're interested in learning the REST calls you need to upload a file of any type to your root OneDrive folder, see the Microsoft Graph Excel REST API ASP.NET to-do list sample.

Les trois exemples de démarrage Excel agissent de la même façon : ils récupèrent le nom et l’adresse de l’utilisateur connecté et ajoutent ces deux types d’information dans une nouvelle ligne du classeur demo.xlsx.All three of the Excel starter samples do the same thing: retrieve the name and address of the signed-in user and add those two pieces of information to a new row in the demo.xlsx workbook. Vous pouvez modifier les exemples pour ajouter des lignes supplémentaires en ajoutant simplement des informations au tableau à deux dimensions qui représente la ou les lignes à ajouter.You can modify the samples to add additional rows simply by adding information to the two-dimensional array that represents the row or rows that you want to add.

Ajout d’une ou de plusieurs lignes à un classeur Excel avec une seule requête RESTAdd a row or rows to an Excel workbook with a single REST request

L’API REST Excel nécessite que vous envoyez le corps d’une requête POST simple dans le point de terminaison REST qui représente la collection de lignes d’un classeur Excel.The Excel REST API requires you to POST a simple request body to the REST endpoint that represents the row collection of an Excel workbook. Si vous travaillez avec un bloc-notes dans le dossier racine du compte OneDrive de l’utilisateur connecté, le point de terminaison REST ressemble à ceci :If you're working with a notebook in the root folder of the signed-in user's OneDrive account, the REST endpoint will look like this:

https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add

Pour savoir comment accéder aux fichiers des dossiers OneDrive, consultez l’article Type de ressource DriveItem dans notre documentation de référence.For more information about how to reach files in OneDrive folders, see the DriveItem resource type in our reference documentation.

Remarque : vous pouvez consulter la collection de lignes existante du classeur en envoyant une requête GET à la partie du chemin d’accès qui se termine à /rows.Note: You can look at the existing row collection of the workbook by making a GET request to the part of the path that ends at /rows.

Le corps de la requête POST ressemble à ceci :The POST body looks like this:

{
  "index": null,
  "values": [
    ['alex darrow', 'adarrow@tenant.onmicrosoft.com']
  ]
}

La valeur du premier paramètre index spécifie la position relative de la ligne ajoutée au tableau de lignes avec indice zéro.The value of the first index parameter specifies the relative position of the row that you're adding to the zero-indexed array of rows. Les lignes en dessous de la ligne insérée sont déplacées vers le bas.Rows below the inserted row will be shifted downwards. Le paramètre null indique que la nouvelle ligne est ajoutée à la fin.The null parameter indicates that the new row will be added to the end.

La valeur du deuxième paramètre values est un tableau de chaînes à deux dimensions qui contient les valeurs non mises en forme de chaque ligne à ajouter.The value of the second values parameter is a two-dimensional string array that contains the unformatted values of each row that you want to add. Le tableau de l’exemple contient une seule ligne, mais vous pouvez ajouter d’autres lignes en ajoutant plusieurs tableaux de chaînes.The array in the sample contains only one row, but you can add more rows by adding more string arrays.

Vous pouvez tester cette requête avec votre propre compte OneDrive en chargeant le fichier demo.xlsx dans votre dossier racine OneDrive et en exécutant cette requête sur l’Afficheur Microsoft Graph.You can test this query with your own OneDrive account by uploading the demo.xlsx file to your OneDrive root folder and executing this query on the Microsoft Graph Explorer.

C’est tout ce dont vous avez besoin pour écrire des données dans un classeur Excel.That is all you need to know in order to write data to an Excel workbook. En revanche, il est important de savoir comment construire et envoyer la requête dans votre propre infrastructure. Dans les exemples de démarrage Excel, vous trouverez trois manières distinctes de le faire.You do need to know how to construct and make the request in your own framework, and the Excel starter samples demonstrate three separate ways of doing this.

Ajout d’une ou de plusieurs lignes à un classeur Excel dans ASP.NETAdd a row or rows to an Excel workbook in ASP.NET

Vous trouverez le code ASP.NET qui construit et envoie la requête dans les fichiers GraphResources.cs et GraphService.cs de l’exemple de démarrage Excel Microsoft Graph pour ASP.NET 4.6.You'll find the ASP.NET code that constructs and sends the request in the GraphResources.cs and GraphService.cs files of the Microsoft Graph Excel Starter Sample for ASP.NET 4.6.

Le fichier GraphResources.cs fournit une classe d’assistance qui encapsule les données des utilisateurs extraites de Microsoft Graph et le corps de la requête à utiliser quand vous écrivez des données dans votre classeur.The GraphResources.cs file provides a helper class for encapsulating both the user data you're retrieving from Microsoft Graph and the request body that you'll use when you write to your workbook.

public class UserInfo
{
    public string Name { get; set; }
    public string Address { get; set; }

}

public class UserInfoRequest
{
    public string index { get; set; }
    public string[][] values { get; set; }
}

La classe GraphService.cs contient une méthode AddInfoToExcel qui remplit ces classes, sérialise la demande d’informations dans un objet JSON, puis transmet cet objet dans le corps de la requête POST.The GraphService.cs class contains an AddInfoToExcel method that populates these classes, serializes the request information into a JSON object, and then passes that object as the POST request body.

public async Task<string> AddInfoToExcel(string accessToken, string name, string address)
{
    string endpoint = "https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add";
    using (var client = new HttpClient())
    {
        using (var request = new HttpRequestMessage(HttpMethod.Post, endpoint))
        {
            // Populate UserInfoRequest object
            string[] userInfo = { name, address  };
            string[][] userInfoArray = { userInfo };
            UserInfoRequest userInfoRequest = new UserInfoRequest();
            userInfoRequest.index = null;
            userInfoRequest.values = userInfoArray;

            // Serialize the information in the UserInfoRequest object
            string jsonBody = JsonConvert.SerializeObject(userInfoRequest);
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            request.Content = new StringContent(jsonBody, Encoding.UTF8, "application/json");

            using (var response = await client.SendAsync(request))
            {
                if (response.IsSuccessStatusCode)
                {
                    return Resource.Graph_UploadToExcel_Success_Result;
                }
                return response.ReasonPhrase;
            }
        }
    }
}

Ajout d’une ou de plusieurs lignes à un classeur Excel dans AngularAdd a row or rows to an Excel workbook in Angular

Vous trouverez le code Angular qui construit et envoie la requête dans le fichier home.service.ts de l’exemple de démarrage Excel Microsoft Graph pour Angular.You'll find the Angular code that constructs and sends the request in the home.service.ts file of the Microsoft Graph Excel Starter Sample for Angular.

Comme cet exemple utilise TypeScript, il tire parti de la bibliothèque cliente JavaScript Microsoft Graph et des types TypeScript Microsoft Graph.Since this sample uses TypeScript, it takes advantage of the Microsoft Graph JavaScript Client Library and the Microsoft Graph TypeScript Types.

La fonction addInfoToExcel dans le fichier home.service.ts construit le tableau de chaînes à deux dimensions et le corps de la requête contenant le tableau.The addInfoToExcel function in the home.service.ts file constructs the two-dimensional string array and the request body that contains the array. Il utilise ensuite la bibliothèque cliente JavaScript Microsoft Graph pour construire et envoyer la requête.It then uses the Microsoft Graph JavaScript Client Library to construct and send the request. La réponse revient sous la forme d’une promesse.The response comes back in the form of a Promise.

addInfoToExcel(user: MicrosoftGraph.User) {
  const userInfo = [];
  const userEmail = user.mail || user.userPrincipalName;
  userInfo.push([user.displayName, userEmail]);

  const userInfoRequestBody = {
    index: null,
    values: userInfo
  };

  const body = JSON.stringify(userInfoRequestBody);

  var client = this.getClient();
  var url = `${this.url}/me/drive/root:/${this.file}:/workbook/tables/${this.table}/rows/add`
  return Observable.fromPromise(client
  .api(url)
  .post(body)
  );
}

Ajout d’une ou de plusieurs lignes à un classeur Excel dans ReactAdd a row or rows to an Excel workbook in React

Vous trouverez le code qui construit et envoie la requête dans le fichier home.js de l’exemple de démarrage Excel Microsoft Graph pour React.You'll find the code that constructs and sends the request in the home.js file of the Microsoft Graph Excel Starter Sample for React.

La fonction onWriteToExcel construit le tableau de chaînes à deux dimensions et le transmet dans le corps de la requête.The onWriteToExcel function constructs the two-dimensional string array and passes it as the request body. Il utilise axios pour construire la requête HTTP.It uses axios to make the HTTP request.

onWriteToExcel() {
  const { token, me } = this.state;

  const myEmailAddress = me.mail || me.userPrincipalName;
  const values = [];

  values.push([me.displayName, myEmailAddress]);

  axios
    .post('https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add',
      { index: null, values },
      { headers: { Authorization: `Bearer ${token}` }}
    )
    .then(res => {
                    console.log(res);
                    const successMessage = "Successfully wrote your data to demo.xlsx!";
                    this.setState ({ successMessage });
                    })
    .catch(err => console.error(err));
}

Voir aussiSee also