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

如何在C#中遍历Google Sheets API返回的嵌套数组?

代码问题与修复方案

你的代码存在两个关键问题:

  • 内层循环边界错误:内层循环判断条件用了sheetResponse.Values.Count(总行数),但实际应该用当前行的元素数量sheetResponse.Values[i].Count。用总行数当每行的元素数会导致索引越界,比如你的示例里总行数是2,但每行有3个元素,当j循环到2时就会超出当前行的索引范围。
  • 冗余遍历:你只需要提取每行的第一个元素(Test1、Test2),没必要遍历所有单元格。

方案1:只提取每行第一个元素

如果目标只是获取Test1、Test2这类每行首列的值,直接访问每行索引0的元素即可:

var sheetRequest = sheetService.Spreadsheets.Values.Get(spreadsheetId, "A2:H");
var sheetResponse = await sheetRequest.ExecuteAsync();

// 遍历每一行
foreach (var row in sheetResponse.Values)
{
    // 确保行不为空且有第一个元素
    if (row.Count > 0)
    {
        // 避免强制转换出错,用ToString()更安全
        string firstValue = row[0].ToString();
        Console.WriteLine(firstValue);
    }
}

方案2:正确遍历所有单元格(如果需要)

如果后续需要处理所有单元格,修正内层循环的边界条件即可:

var sheetRequest = sheetService.Spreadsheets.Values.Get(spreadsheetId, "A2:H");
var sheetResponse = await sheetRequest.ExecuteAsync();

for (int i = 0; i < sheetResponse.Values.Count; i++)
{
    // 内层循环用当前行的元素数量,而非总行数
    for (int j = 0; j < sheetResponse.Values[i].Count; j++)
    {
        string s = sheetResponse.Values[i][j].ToString();
        Console.WriteLine(s);
    }
}

额外注意事项

  • Google Sheets API返回的values中,空单元格不会被包含,所以某行的元素数量可能小于你请求的列数,建议每次访问元素前先判断行的长度,避免索引越界。
  • 不要直接强制转换(string),因为返回的元素可能是其他类型(比如数字),用ToString()兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:57:29