【问题标题】:Why can't I get more than 30 cells in a table?为什么我不能在一个表格中获得超过 30 个单元格?
【发布时间】:2019-09-18 10:05:46
【问题描述】:

我尝试从超过 30 个单元格中获取数据(如果我没记错的话,大约是 40 个),但我始终获得的数据不超过 30 个。如何解决这个问题?

  • 在案例 9 - 好的
  • 案例 10 - 失败。

Rows 有 30 个项目,但我选择更多

namespace CBox
{
    public partial class Form1 : Form
    {
        static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
        static string ApplicationName = "CBox";

        static String spreadsheetId = "1LovVHkHGQYADfgEBMGEaZFTDkSgQEQhQ-FuRZHWkXHo";
        String range;
        static String credPath = "token.json";
        static FileStream stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read);
        SpreadsheetsResource.ValuesResource.GetRequest request;

        static UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result;
        SheetsService service = new SheetsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });


        private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

            comboBox2.Items.Clear();

            range = "A2:AT9";
            request = service.Spreadsheets.Values.Get(spreadsheetId, range);
            //request.MajorDimension = SpreadsheetsResource.ValuesResource.GetRequest.MajorDimensionEnum.COLUMNS;
            ValueRange response = request.Execute();
            IList<IList<Object>> values = response.Values;

            switch (comboBox1.SelectedIndex)
            {
                ***********

                case 9:                                                     //120
                    foreach (var rows in values)
                    {
                        if (rows[28] != "" && rows[29] != "")
                        {
                            comboBox2.Items.Add(rows[0]);
                        }
                    }
                    break;

                case 10:                                                     //130
                    foreach (var rows in values)
                    {
                        if (rows[30] != "" && rows[31] != "")
                        {
                            comboBox2.Items.Add(rows[0]);
                        }
                    }
                    break;


            }
        }
    }
}

【问题讨论】:

  • 另一个excel问题。为了节省空间,Excel 对每个工作表都有一个使用范围。因此,您似乎正在从工作表返回仅 30 列的使用范围。然后您尝试添加超过 30 列。

标签: c# google-sheets-api


【解决方案1】:

你能检查范围内的所有单元格是否都有值吗?将返回包含值的最大单元格范围。所以如果你在范围的末尾有一些空值,它们将不会被返回。

编辑.. 我试图从您在 cmets 中发布的工作表中获取范围,没问题。

{"majorDimension":"ROWS","range":"'????1'!A9:AT9","values":[["Prime Grand 2835 3 Lens","74","15","180","0,72","160","75","Cool White","http://tdkatod.ru/1497","","","","","","100","75","110","80","130","90","140","100","150","115","160","125","170","130","180","140","190","150","200","160","210","170","220","180","230","190","240","220"]],"ETag":null}

Try for yourself

您使用的是哪个 API 版本?如果您尝试 Google API 页面上的代码 (C#),它就可以工作。

【讨论】:

  • 我没有t change anything. I try to parse value till 190 , but it fails at 120. Ill 尝试用零填充其他单元格,但不知道它是否有帮助
  • 如果我尝试使用 JsonConvert 序列化值数组以查看所有数组,我得到相同的 30 个值,而不是更多
  • 在 C# 上使用 v4 API,将尝试从该站点复制/粘贴代码并查看它是否有效,谢谢
  • 看这个,我没有改任何参数,同样的范围,同样的文档如果我写ValueRange response = request.Execute(); IList> 值 = response.Values; var 行 = 值; Console.WriteLine(JsonConvert.SerializeObject (row)) 我看到了书中的所有单元格,但是如果我写 Console.WriteLine(JsonConvert.SerializeObject (row[31])) 我得到了错误
【解决方案2】:

Google 严格按照内容切割行。

假设您在 Google 表格中有一个表格:

[dsds] [dwdw] []
[dswg] [] []
[dswf] [] [dwdw]

如果您对指定范围 (A0:C2) 发出请求,然后在调试期间查看 VisualStudio 中的值,您会发现每行中没有三个元素,而是与需要的一样多。不会自动上传任何多余的空单元格。

[dsds] [dwdw]
[dswg]
[dswf] [] [dwdw]

我没有考虑到这一点。我将该值与字符串中的索引进行了比较,实际上该索引不存在,尽管理论上该单元格在请求的范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2019-06-26
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2022-11-14
    • 2021-08-15
    相关资源
    最近更新 更多