Schreiben von Daten in eine Excel-Arbeitsmappe mit Microsoft GraphWrite data to an Excel workbook with Microsoft Graph

Die Excel REST-API bietet eine einfache und plattformunabhängige Methode zum Hochladen von Informationen in eine Excel-Arbeitsmappe.The Excel REST API provides an easy, platform-agnostic way to upload information to an Excel workbook. In diesem Thema wird gezeigt, wie Sie in drei Webentwicklungsframeworks einfache Datensätze in eine Excel-Arbeitsmappe schreiben: ASP.NET, Angular und 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. Sie können sich die in diesem Thema enthaltenen Codebeispiele in den Microsoft Graph Excel-Beispielen auf GitHub ansehen.You can look at the code samples featured in this topic by visiting the Microsoft Graph Excel starter samples on GitHub.

Hinweis: In allen drei Beispielen werden Daten in eine Excel-Arbeitsmappe mit dem Namen demo.xlsx geschrieben.Note: All three of the samples write data to an Excel workbook named demo.xlsx. Diese Arbeitsmappe wird für Sie bereitgestellt, damit Sie sie in Ihr eigenes OneDrive hochladen, Sie können aber auch Microsoft Graph zum Hochladen von Dateien in OneDrive verwenden.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. Wenn Sie mehr über die REST-Aufrufe erfahren möchten, die Sie zum Hochladen einer Datei eines beliebigen Typs in Ihren OneDrive-Stammordner benötigen, sehen Sie sich Microsoft Graph – Excel REST-API – ASP.NET – Beispiel Aufgabenliste an.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.

In allen drei Excel-Einstiegsbeispielen werden dieselben Schritte ausgeführt: Abrufen des Namens und der Adresse des angemeldeten Benutzers und Hinzufügen dieser zwei Informationsstücke zu einer neuen Zeile in der Arbeitsmappe 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. Sie können die Beispiele so ändern, dass zusätzliche Zeilen hinzugefügt werden, indem Sie einfach Informationen zu dem zweidimensionalen Array hinzufügen, das die Zeile bzw. die Zeilen darstellt, die Sie hinzufügen möchten.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.

Hinzufügen von Zeilen zu einer Excel-Arbeitsmappe mit einer einzigen REST-AnforderungAdd a row or rows to an Excel workbook with a single REST request

Die Excel-REST-API erfordert, dass Sie eine einfachen Anforderungstext für den REST-Endpunkt bereitstellen, der die Zeilenauflistung einer Excel-Arbeitsmappe darstellt.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. Wenn Sie mit einem Notizbuch im Stammordner des OneDrive-Konto des angemeldeten Benutzers arbeiten, sieht der REST-Endpunkt wie folgt aus: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

Weitere Informationen dazu, wie Sie Dateien in OneDrive-Ordnern erreichen, finden Sie unter DriveItem-Ressourcentyp in unserer Referenzdokumentation.For more information about how to reach files in OneDrive folders, see the DriveItem resource type in our reference documentation.

Hinweis: Sie können sich die vorhandene Zeilenauflistung der Arbeitsmappe ansehen, indem Sie eine GET-Anforderung für den Teil des Pfads ausführen, der bei /rows endet.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.

Der POST-Text sieht wie folgt aus:The POST body looks like this:

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

Der Wert des ersten index-Parameters gibt die relative Position der Zeile an, die Sie zu dem nullindizierten Array von Zeilen hinzufügen.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. Zeilen unterhalb der eingefügten Zeile werden nach unten verschoben.Rows below the inserted row will be shifted downwards. Der null-Parameter gibt an, dass die neue Zeile am Ende hinzugefügt wird.The null parameter indicates that the new row will be added to the end.

Der Wert des zweiten values-Parameters ist ein zweidimensionales Zeichenfolgenarray, das die unformatierten Werte jeder Zeile enthält, die Sie hinzufügen möchten.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. Das Array im Beispiel enthält nur eine Zeile, aber Sie können weitere Zeilen hinzufügen, indem Sie weitere Zeichenfolgenarrays hinzufügen.The array in the sample contains only one row, but you can add more rows by adding more string arrays.

Sie können diese Abfrage mit Ihrem eigenen OneDrive-Konto testen, indem Sie die Datei „demo.xlsx“ in Ihren OneDrive-Stammordner hochladen und diese Abfrage im Microsoft Graph Explorer ausführen.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.

Das ist alles, was Sie wissen müssen, um Daten in eine Excel-Arbeitsmappe zu schreiben.That is all you need to know in order to write data to an Excel workbook. Sie müssen wissen, wie die Anforderung in Ihrem eigenen Framework erstellt und ausgeführt wird. In den Excel-Einstiegsbeispielen werden drei verschiedene Möglichkeiten hierfür dargestellt.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.

Hinzufügen von Zeilen zu einer Excel-Arbeitsmappe in ASP.NETAdd a row or rows to an Excel workbook in ASP.NET

Den ASP.NET-Code, der die Anforderung sendet, finden Sie in den Dateien GraphResources.cs und GraphService.cs des Microsoft Graph Excel-Einstiegsbeispiels für 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.

Die Datei GraphResources.cs enthält eine Hilfsklasse zum Schachteln der Benutzerdaten, die Sie von Microsoft Graph abrufen, und des Anforderungstexts, den Sie beim Schreiben in Ihre Arbeitsmappe verwenden.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; }
}

Die GraphService.cs-Klasse enthält eine AddInfoToExcel-Methode, die diese Klassen auffüllt, die Anforderungsinformationen in ein JSON-Objekt serialisiert und dieses Objekt dann als den POST-Anforderungstext übergibt.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;
                }
            }
        }
    }

Hinzufügen von Zeilen zu einer Excel-Arbeitsmappe in AngularAdd a row or rows to an Excel workbook in Angular

Den Angular-Code, der die Anforderung sendet, finden Sie in der Datei home.service.ts file des Microsoft Graph Excel-Einstiegsbeispiels für 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.

Da in diesem Beispiel TypeScript verwendet wird, werden die Microsoft Graph JavaScript-Clientbibliothek und die Microsoft Graph TypeScript-Typen genutzt.Since this sample uses TypeScript, it takes advantage of the Microsoft Graph JavaScript Client Library and the Microsoft Graph TypeScript Types.

Die addInfoToExcel-Funktion der home.service.ts-Datei erstellt das zweidimensionalen Zeichenfolgenarray und den Anforderungstext, der das Array enthält.The addInfoToExcel function in the home.service.ts file constructs the two-dimensional string array and the request body that contains the array. Anschließend wird die Microsoft Graph JavaScript-Clientbibliothek zum Erstellen und Senden der Anforderung verwendet.It then uses the Microsoft Graph JavaScript Client Library to construct and send the request. Die Antwort wird in Form einer Zusage zurückgesendet.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)
    );
  }

Hinzufügen von Zeilen zu einer Excel-Arbeitsmappe in ReactAdd a row or rows to an Excel workbook in React

Den React-Code, der die Anforderung sendet, finden Sie in der Datei home.js file des Microsoft Graph Excel-Einstiegsbeispiels für 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.

Die onWriteToExcel-Funktion erstellt das zweidimensionalen Zeichenfolgenarray und übergibt es als den Anforderungstext.The onWriteToExcel function constructs the two-dimensional string array and passes it as the request body. Axios wird für die HTTP-Anforderung verwendet.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));
  }

##Siehe auchSee also