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

在.NET中使用Graph API v5.31从OneDrive获取Excel单元格值遇阻

.NET Graph API v5.31 获取OneDrive Excel行列/单元格值解决方案

核心问题在于Graph SDK v5采用按需请求字段的设计,默认不会返回Values、Text这类包含实际数据的属性,必须显式指定要获取的字段才能填充对应属性值。

修正后的代码示例

1. 获取已用区域(UsedRange)的数值

WorkbookRange usedRange = GraphClient.Drives[driveId].Items[itemId].Workbook.Worksheets[sheetName]
    .UsedRange
    .GetAsync(requestConfiguration => 
    {
        // 指定需要返回的字段,按需添加
        requestConfiguration.QueryParameters.Select = new string[] { "Values", "Text", "Address", "RowCount", "ColumnCount" };
    }).Result;

// 访问已用区域的所有值
var allValues = usedRange.Values;

2. 获取指定列范围的数值

WorkbookRange colRange = GraphClient.Drives[driveId].Items[itemId].Workbook.Worksheets[sheetName]
    .RangeWithAddress("NAME!A1:A79")
    .GetAsync(requestConfiguration => 
    {
        requestConfiguration.QueryParameters.Select = new string[] { "Values" };
    }).Result;

// 遍历列值
foreach (var row in colRange.Values)
{
    var cellValue = row[0]; // 单列的第一个元素就是当前行的单元格值
    // 处理逻辑
}

3. 获取单个单元格的数值

WorkbookRange cell = GraphClient.Drives[driveId].Items[itemId].Workbook.Worksheets[sheetName]
    .CellWithRowWithColumn(2, 2)
    .GetAsync(requestConfiguration => 
    {
        requestConfiguration.QueryParameters.Select = new string[] { "Values", "Text" };
    }).Result;

// 获取单元格值(注意Values是二维数组)
var cellValue = cell.Values?[0][0];
var cellText = cell.Text?[0][0];

补充说明

  • 如果需要公式、数字格式等其他属性,直接将对应的字段名(如Formulas、NumberFormat)添加到Select数组中即可。
  • 后续异步化重构时,务必用await替代.Result,避免UI线程死锁问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:03:13