电子表格API:从特定单元格地址获取单元格

时间:2015-09-01 11:38:33

标签: java google-spreadsheet-api

如何获得CellEntry给定特定的单元格地址,例如A1表示法。例如,

String address = "A1";
CellEntry cellEntry = getCellEntry(address);

public CellEntry getCellEntry(String address){

    //- What can I do inside here

}

以前,我使用CellFeed获取所有内容,并使用cellFeed.getEntries进行迭代以获取每个CellEntry并根据单元格地址过滤掉。但我认为,由于我的电子表格很大,因此会出现性能问题。任何的想法 ?我使用的是Java。

1 个答案:

答案 0 :(得分:0)

我想我有两种方法:

方法1

使用CellQuery

public CellEntry getCellEntry(URL cellFeedUrl, Integer colNum, Integer rowNum){

    CellQuery cellQuery = new CellQuery(cellFeedUrl);
    cellQuery.setMaximumCol(colNum);
    cellQuery.setMinimumCol(colNum);
    cellQuery.setMaximumRow(rowNum);
    cellQuery.setMinimumRow(rowNum);

    CellFeed cellFeed = service.getFeed(cellQuery, CellFeed.class)              
    return cellFeed.getEntries().get(0);
}

注意:setMaximumColsetMinimumCol必须相同才能获得指定的列。与setMaximumRowsetMinimumRow类似。

方法2

使用CellFeedURL

public CellEntry getCellEntry(WorksheetEntry worksheet, Integer colNum, Integer rowNum){

    if (colNum == null || rowNum == null){
        //- do something
    }
    else {

        String row = "?min-row=" + rowNum + "&max-row=" + rowNum;
        String col = "&min-col=" + colNum + "&max-col=" + colNum;

        URL cellFeedUrl = new URI(worksheet.getCellFeedUrl().toString()
        + row + col).toURL();
        CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class);
        return cellFeed.getEntries().get(0);
    }
}

注意:基于Google Spreadsheet API : Changing content of a cell

我个人认为第二种方法更好。