首页 > 解决方案 > 通过 Microsoft Graph API 创建 excel 文件

问题描述

有谁知道如何通过 MS Graph API 创建 excel 和 ppt 文件?我们正在尝试利用 MS Graph API 在单击按钮时创建 word/excel/ppt 文件,虽然我们发现了如何创建 word 文件,但即使来自 api 的成功响应,创建的 excel 和 powerpoint 文件也会损坏。下面的端点适用于 word 文件。目前,我们一直在使用图形 api 浏览器 ( https://developer.microsoft.com/en-us/graph/graph-explorer# )。任何帮助,将不胜感激!

POST https://graph.microsoft.com/v1.0/drives/{Drive ID}/root/children/ 

Request Body:
{
  "name": "FileTest6.docx",
  "file":{
  }
}

标签: excelasp.net-coremicrosoft-graph-api

解决方案


PowerPoint 文件

可以通过DriveItem 上传端点创建 PowerPoint 文件,例如:

PUT https://graph.microsoft.com/v1.0/me/drive/root:/sample.pptx:/content

或者

POST https://graph.microsoft.com/v1.0/me/drive/root/children
{
  "name": "Sample.pptx",
  "file":{ }
}

Excel 文件

对于 excel 文件,情况有点不同,因为需要明确提供要上传的 excel 文件的内容。

对于 ASP.NET Core 应用程序,可以考虑以下解决方案:

C# 示例

using (var stream = new MemoryStream())
{
    CreateWorkbook(stream);
    stream.Seek(0, SeekOrigin.Begin);
    var driveItem = await graphClient.Me
            .Drive
            .Root
            .ItemWithPath("SampleWorkbook1.xlsx")
            .Content
            .Request()
            .PutAsync<DriveItem>(stream);
    }

在哪里

public static void CreateWorkbook(Stream stream)
{

    // By default, AutoSave = true, Editable = true, and Type = xlsx.
    var spreadsheetDocument =
        SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);

    // Add a WorkbookPart to the document.
    var workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook();

    // Add a WorksheetPart to the WorkbookPart.
    var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet(new SheetData());
    // Add Sheets to the Workbook.
    var sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

    // Append a new worksheet and associate it with the workbook.
    var sheet = new Sheet()
        {Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet"};
    sheets.Append(sheet);

    workbookpart.Workbook.Save();
    // Close the document.
    spreadsheetDocument.Close();
 }

推荐阅读