You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MS Graph SDK V5向SharePoint Excel表格添加数据遇Json类问题

解决Microsoft Graph SDK v5向SharePoint Excel表格写入数据的问题

核心问题分析

你遇到的问题根源在于SDK v5中WorkbookTableRow.Values的类型要求是IList<IList<Json>>,官方文档示例里的Number类属于错误用法(该类已被弃用或类型不匹配),直接替换为int、double等基础类型也无法匹配Json类型的约束,最终导致数据无法写入表格。

正确实现方法

1. 用Microsoft.Graph.Models.Json包装数据

Json类是SDK v5专门用于处理动态JSON值的封装类,所有单元格数据都需要用它来包装,示例代码如下:

using Microsoft.Graph.Models;

// 构造要插入的行数据,每个值用Json类包装
var addReq = new WorkbookTableRow
{
    Values = new List<List<Json>>
    {
        new List<Json>
        {
            new Json(1),    // 整数类型
            new Json("测试文本"),  // 字符串类型
            new Json(3.14)  // 浮点数类型
        },
        new List<Json>
        {
            new Json(4),
            new Json("第二行数据"),
            new Json(6.78)
        }
    }
};

// 执行添加行操作
await GraphClient.Drives[drive.Id].Items[excelFile.Id]
    .Workbook.Worksheets[sheetName]
    .Tables[table.Value[0].Id].Rows
    .PostAsync(addReq);

2. 替代方案:手动构造JSON请求体

如果不想依赖Json类,也可以绕过SDK的类型限制,直接构造原始JSON请求发送:

using System.Text.Json;

// 构造原始数据结构
var rawData = new List<List<object>>
{
    new List<object> { 1, "测试文本", 3.14 },
    new List<object> { 4, "第二行数据", 6.78 }
};

// 序列化为JSON字符串
var requestBody = JsonSerializer.Serialize(new { values = rawData });

// 发送POST请求
var response = await GraphClient.Drives[drive.Id].Items[excelFile.Id]
    .Workbook.Worksheets[sheetName]
    .Tables[table.Value[0].Id].Rows
    .PostAsync(requestBody, new RequestConfiguration { Headers = { { "Content-Type", "application/json" } } });

关于SDK版本的建议

  • 若追求稳定的示例和更少的类型适配问题,降级到SDK v4是更简单的选择——v4中WorkbookTableRow.Values直接支持IList<IList<object>>,无需额外的Json包装,官方示例也更准确。
  • 若坚持使用v5,确保安装最新正式版而非预览版,部分预览版的类型定义存在未修复的bug。

内容的提问来源于stack exchange,提问作者Devon Bauman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:30:10