【问题标题】:How can I get a list of column names using the google spreadsheet api?如何使用 google 电子表格 api 获取列名列表?
【发布时间】:2013-05-23 21:00:13
【问题描述】:

我正在使用基于列表的提要来访问我在谷歌文档中的电子表格。如何获取列名/ columnHeaders 的列表?

我自己想出了这个问题的答案,但由于我在 StackOverflow 上或在 google api 的 java 文档中找不到答案,我想我会贡献我的解决方案。

【问题讨论】:

    标签: java google-api


    【解决方案1】:

    我假设您一开始就知道如何访问工作表,因此您负责编写以下两个函数。

    SpreadsheetService service = getspreadsheetService();
    WorksheetEntry worksheet = getGoogleWorksheet();
    

    以下是获取 columnHeaders 列表的方法:

    URL url = worksheet.getListFeedUrl();
    ListFeed rows = service.getFeed(url, ListFeed.class);
    ListEntry row = rows.getEntries().get(0);
    Set<String> columnHeadings = row.getCustomElements().getTags();
    

    【讨论】:

    • 这在 PHP 中可行吗?
    • 如果工作表有标题行但没有数据行,这将不起作用。
    • @VivinPaliath 我遇到了这个问题,我想检查列名是否符合要求,之前我开始插入数据行...你已经发现怎么做了吗那个?
    • @heltonbiker MS_SL 的解决方案非常接近。我最终不需要它,但我的解决方案非常相似。您可以查看自定义元素上的标签,看看它们是否符合要求。
    • @VivinPaliath 感谢您的回答!正如你所说,我实际上设法用其他答案解决了我的问题:)
    【解决方案2】:

    您可以使用 CellFeed 并遍历行值为 1 的所有单元格。

    但是,您需要去除所有不是字母数字、小数或破折号的字符,还需要去除所有前导数字,这可以通过正则表达式和 String.replaceAll() 方法来完成。

    URL cellFeedUrl = worksheet.getCellFeedUrl();
    CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class);
    String[] columnNames = new String[worksheet.getColCount()];
    for (CellEntry entry : cellFeed.getEntries())
        if (entry.cell.getRow() == 1)
        {
            String val = entry.cell.getValue().toLowerCase();
            String parsed = val.replaceAll('^[0-9]*|[^a-z0-9\-\.]', '');
            columnNames[entry.cell.getCol()] = parsed;
        }
    

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多