excel - 通过 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":{
}
}
解决方案
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 应用程序,可以考虑以下解决方案:
- 通过Open XML SDK创建空的 Excel 文档(参见
CreateWorkbook
下面的示例) - 通过DriveItem 上传端点上传
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();
}
推荐阅读
- c# - SecureString 作为全局应用程序变量是安全的吗?
- python - 来自另一个 def 函数的 Python 函数
- model - Keras model.load_weights() 无法识别大写字母
- google-sheets - 索引 - 偏移量 - 数组公式
- python - 使用元组列表中的第一个元素作为字典键
- java - 正则表达式替换xml内容java
- objective-c - 如何在 macOS 上以编程方式将文件和文件夹移动到垃圾箱?
- sql - 使用数字而不是 BigQuery SQL 中的时区名称从 UTC 转换时区?
- java - 我应该使用 mySQL 表视图还是 Spring Data JPA 投影?
- python - 在python中使用UDP进行视频直播