通过 Microsoft Graph API 创建 Excel 文件

2023-12-05

有谁知道如何通过 MS Graph API 创建 excel 和 ppt 文件?我们正在尝试利用 MS Graph API 通过单击按钮来创建 word/excel/ppt 文件,虽然我们找到了如何创建 word 文件,但即使 API 成功响应,创建的 Excel 和 powerpoint 文件也会损坏。下面的终点适用于 Word 文件。我们一直在使用 graph api explorer (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 文件

PowerPoint 文件可以通过以下方式创建驱动器项目上传端点,例如:

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

or

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

Excel 文件

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

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

  • 通过创建空 Excel 文档开放 XML SDK (see CreateWorkbook下面的例子)
  • 通过上传驱动器项目上传终点

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);
    }

where

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();
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Microsoft Graph API 创建 Excel 文件 的相关文章

随机推荐

  • Android 中退出应用程序

    我想退出 Android 中的应用程序 只需放置一个 退出 按钮 就会终止我的应用程序 我知道我不应该这样做 我知道这不是操作系统的哲学 如果您知道如何做到这一点 请分享 在应用程序中 我有许多打开的活动 因此 finish 无法完成这项工
  • 从经纬度获取国家/地区

    我想知道如何使用 JavaScript 从纬度和经度获取国家 地区名称 我愿意使用 Google 地图的 JavaScript API 我还可以获得城市和邮政编码吗 Edit 我的目标是自动填写地址字段 而不是将其显示在地图上 我不知道它是
  • WinSCP - 如何识别文件是否传输成功

    我正在使用 WinSCP 通过 SFTP 自动上传文件 我已经打开了级别1的调试日志 是否可以查看文件是否上传成功 谢谢 日志文件的一部分 2012 08 30 15 30 06 539 File C files file 20120830
  • 监视对新主题的请求暂停向现有主题推送通知

    我在我的 Google Cloud Pub Sub 帐户中配置了两个主题 每个主题在单个项目下都有一个订阅 当我在收件箱上调用 watch 并将主题 1 传递给监视请求时 我会收到发送到所需端点的推送通知 当我在收件箱上调用 watch 时
  • JSF 状态最初保存到服务器并在会话超时时传输到客户端?

    是否有任何状态保存方法允许 JSF 应用程序最初在服务器上保存状态数据 但在会话过期时间间隔之后 该状态会传输到客户端 以便应用程序始终响应 即使在服务器上的会话超时之后并且内存更好在服务器上管理 或者有什么方法可以实现这一点 但我希望这应
  • 如何使用 Guava ListenableFuture 和 Futures.chain() 方法

    我有一个作业要求我学习如何使用 Guava 并发库 在任务中 我有几个线程池 其中每个线程池都由一个单独的对象控制 每个池都有几个执行简单任务的工作线程 主要是通过使用来模拟做事 Thread sleep long 并且所有这些简单的任务都
  • 使用 REST 优化 Neo4j 中的大批量批量插入

    我需要通过 REST API 的 Batch 端点将大量节点及其之间的关系插入到 Neo4j 中 大约 5k 记录 秒 仍在增加 这将是 24x7 连续插入 每条记录可能只需要创建一个节点 但其他记录可能需要创建两个节点和一个关系 我可以通
  • 长轮询服务器原理(客户端认证)

    假设我有一个长轮询服务器 它应该正常工作 当新客户端连接到网站时 他只是以匿名方式连接 无需身份验证 会发出新的 GUID 并将其存储在签名的 cookie 中 该 cookie 在轮询期间标识此连接客户端和服务器 现在客户端想要登录并以经
  • 在一般情况下,Python 的 super() 实际上是如何工作的?

    上面有很多很棒的资源super 包括this这篇很棒的博文经常出现 并且 Stack Overflow 上也出现了很多问题 然而 我觉得他们都没有解释它在最一般情况下 使用任意继承图 如何工作 以及幕后发生的事情 考虑一下钻石继承的基本示例
  • 如果返回类型可能是 Error 或 Success 对象,如何反序列化 XML

    我正在使用一个基于 XML 的 API 它的根节点可以返回一个SuccessResponse or a ErrorResponse 我正在使用下面的内容来反序列化数据 但我不确定如何处理返回不是 a 的情况SuccessResponse 处
  • 实体框架、PostgreSQL、带有隐藏 xmin 列的乐观并发

    我正在针对 PostgreSQL 9 1 数据库使用实体框架 模型优先方法 您可能都知道每个表都有一个隐藏列 称为xmin我将用它来帮助 EF 在执行更新之前确定该行是否已更改 我知道 PostgreSQL 的内部结构可能会发生变化 这对于
  • 从 dll 导出带有 clr 参数的函数?

    我有一个遗留的托管 c dll 我需要调用一些返回托管类型的函数 对于没有托管类型的 dllexports 这很简单 我只需在标头中定义静态 c 函数 如下所示 extern C declspec dllexport int cdecl I
  • 将 Hibernate 3 迁移到 5:关系 hibernate_sequence 不存在

    我正在将使用 Hibernate 3 运行的应用程序迁移到 Hibernate 5 我有一个奇怪的错误 错误 关系 hibernate sequence 不存在 我们正在使用 hbm xml映射文件 一切工作正常 直到我更改了 Hibern
  • Django 单元测试响应上下文为 None

    为什么在下面的测试中response context None 我检查了response content 它是 如果我删除 assertIsNotNone 行 我会收到 TypeError NoneType object is not su
  • Java中动态绑定是如何实现的?

    我知道在C 中 每个实例中都有一个指向虚拟表的虚拟指针 但是Java中动态绑定是如何实现的呢 我想我会回答我自己的问题 基本上 对象存储对其类对象的引用 动态绑定将从对象转发到该类对象
  • 部署在 IIS 6 上的 MVC3 RC 应用程序出现“403 禁止”错误

    我已经将一个非常简单的 MVC3 RC 应用程序部署到 IIS 6 Windows 2003 服务器 我在尝试访问根目录时收到 403 禁止 错误 目前该应用程序只有一页 因此没有其他可供尝试 我注意到根目录中不再有 default asp
  • 保护文件上传

    几年前 我在学习期间为一家小公司编写了一个网站 我开始意识到我的安全技能并没有达到应有的水平 最近该网站遭到黑客攻击 并且使用用于图像上传的表单上传了恶意 php 代码 此后我进入了 NET 世界 虽然我知道如何保护 NET 中的文件上传
  • 如何在 Internet Explorer 中使用控制台日志记录?

    有 IE 的控制台记录器吗 我正在尝试将一堆测试 断言记录到控制台 但我无法在 IE 中执行此操作 您可以通过启动 开发人员工具 F12 来访问 IE8 脚本控制台 单击 脚本 选项卡 然后单击右侧的 控制台 在 JavaScript 代码
  • 使用密码配置跳转/堡垒主机

    我有三个主机 我的本地 ansible 控制器 跳跃 堡垒主机 jump host 对于我的基础设施 我想要针对其运行 ansible 任务的目标主机 target host 只能通过以下方式访问jump host 作为我的库存文件的一部分
  • 通过 Microsoft Graph API 创建 Excel 文件

    有谁知道如何通过 MS Graph API 创建 excel 和 ppt 文件 我们正在尝试利用 MS Graph API 通过单击按钮来创建 word excel ppt 文件 虽然我们找到了如何创建 word 文件 但即使 API 成功