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

C#如何将Google Sheets API返回的IList对象转换为字符串

问题原因

你直接对IList<IList<Object>>类型调用默认ToString()方法,只会返回集合的类型全限定名,不会遍历内部嵌套的元素输出单元格内容,因此无法拿到预期的单元格值。Google Sheets API返回的values结构为:外层列表对应工作表的行,内层列表对应单行里的每一列单元格值。

解决方案

针对当前获取单个单元格(A1)的场景

因为你请求的范围是单个单元格NET!A1,只要该单元格有值,直接取嵌套列表的第一层第一个元素即可,修复后的代码如下:

static string StringEntryRequest()
{
    var range = "NET!A1";
    var request = service.Spreadsheets.Values.Get(spreadsheetId, range);
    Console.WriteLine("Execute");
    ValueRange response = request.Execute();
    Console.WriteLine("Execute complete");
    IList<IList<Object>> values = response.Values;
    // 先判空避免空引用异常
    if (values != null && values.Count > 0 && values[0].Count > 0)
    {
        // 直接转字符串返回A1单元格内容
        return values[0][0]?.ToString() ?? string.Empty;
    }
    // 无值时返回空字符串
    return string.Empty;
}

针对多单元格范围的通用字符串转换

如果后续你需要查询多行多列的范围,想把整个范围的内容转为格式化字符串,可以遍历嵌套列表拼接,示例如下:

// 自定义转换方法,可根据需求调整分隔符
static string ConvertValuesToString(IList<IList<object>> values)
{
    if (values == null || values.Count == 0) return string.Empty;
    var rowStrList = new List<string>();
    foreach (var row in values)
    {
        // 每行的单元格用英文逗号分隔,可自行替换为制表符等其他分隔符
        rowStrList.Add(string.Join(",", row.Select(cell => cell?.ToString() ?? string.Empty)));
    }
    // 每行之间用换行分隔
    return string.Join(Environment.NewLine, rowStrList);
}

使用时直接调用ConvertValuesToString(values)即可拿到格式化后的所有单元格内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:04