当前位置: 首页 > 知识库问答 >
问题:

如何在具有值的最后一行之后插入行?

扈高逸
2023-03-14

我插入数据到一个电子表格与新的谷歌工作表API v4,代码完美的工作和数据它是插入良好的工作表。

但是如何找出最后一行有数据来添加后面的数据呢?

List<List<Object>> arrData = getData();

ValueRange oRange = new ValueRange();
oRange.setRange("Pedidos!AXXXXXXX"); // I NEED THE NUMBER OF THE LAST ROW
oRange.setValues(arrData);

List<ValueRange> oList = new ArrayList<>();
oList.add(oRange);

BatchUpdateValuesRequest oRequest = new BatchUpdateValuesRequest();
oRequest.setValueInputOption("RAW");
oRequest.setData(oList);

BatchUpdateValuesResponse oResp1 = mService.spreadsheets().values().batchUpdate("ID_SPREADSHEET", oRequest).execute();

A1符号中有什么技巧吗?

我需要一个相当于。从Google应用程序脚本获取LastRow

共有3个答案

长孙鸿
2023-03-14

可以使用AppendCellsRequest追加一行。下面的方法应该会让你去。我没有包含getRowDataListForCellStrings方法,因为它是应用程序特定的。

首先创建包含AppendCellsRequest的请求对象:

public BatchUpdateSpreadsheetResponse appendWorksheet(String cellValues) throws SpreadsheetException {
    AppendCellsRequest appendRequest = new AppendCellsRequest();
    appendRequest.setSheetId( mSheet.getProperties().getSheetId() );
    appendRequest.setRows( getRowDataListForCellStrings(cellValues) );
    appendRequest.setFields("userEnteredValue");

    Request req = new Request();
    req.setAppendCells( appendRequest );

    return executeBatchRequest(req);
}

然后在电子表格()界面上调用batchUpdate:

BatchUpdateSpreadsheetResponse executeBatchRequest(Request request) throws SpreadsheetException {
    List<Request> requests = new ArrayList<>();
    requests.add( request );

    BatchUpdateSpreadsheetRequest batchRequest = new BatchUpdateSpreadsheetRequest();
    batchRequest.setRequests( requests );

    try {
          return  mService.spreadsheets().batchUpdate(mSpreadsheet.getSpreadsheetId(), batchRequest).execute();
    } catch (IOException e) {
        throw new SpreadsheetException(e);
    }
}

不幸的是,似乎没有办法知道哪些行被更新了。当以这种方式追加时,似乎不可能设置value eInputOption。

苏坚成
2023-03-14

V4API无法询问“数据的最后一行是什么”,因为它是与应用程序脚本API不同的API样式。您可以通过请求数据并计算从第一个请求行到最后一个返回行的偏移量来推断最后一行。

邓阳伯
2023-03-14

如果使用“附加”功能并将范围设置为整个工作表,则API将查找最后一行并在其之后附加新数据。

本网页对此进行了解释。

https://developers.google.com/sheets/api/guides/values#appending_values

以下是一些示例代码:

String range="Sheet1";
insertData.setValues(rows);
AppendValuesResponse response=service.spreadsheets().values()
.append(spreadsheetId,range,insertData).setValueInputOption("USER_ENTERED")
            .execute();

请注意,响应将告诉您它插入的位置。

 类似资料:
  • 问题内容: 我正在使用PHP中的mvc结构,我想检索最后插入的行ID。 我创建了以下sql代码: 但不幸的是我遇到了这个错误: 我也尝试过此堆栈链接,但不适用于我,因此如果您能帮助我获取ID,我将非常高兴。 我也在这里共享我的controller.php文件。 问题答案: 你快到了。 如果您查看lastInsertId的手册页,则会在数据库句柄上调用它- 您当前正在语句中对其进行调用。 您只需要致

  • 我有一个作为模板的电子表格,最后两行以某种特定的方式格式化(颜色和字体)。 它看起来像这样: 我想做的是插入尽可能多的“占位符”行,让最后一行“滑”下来。 到目前为止,我尝试了,它确实插入了新行,但不会向下移动最后一行的颜色。这样我就可以在电子表格中找到我想要的数据,但是颜色格式错误(基本上第三行总是有彩色背景,而最后一行没有)。 我想做的伪代码是: 计算我需要添加多少占位符行, 获取电子表格 剪

  • 我使用Golang将数据插入到DB中,基本上我的查询如下所示 中唯一可用的内容是lastInsertId和受影响的行的#。但我需要的是受影响的行。原因是我将数据插入到一个psql数据库中,该数据库有一个自动增量id列,所以我希望数据与此一起返回。 例如,使用Java hibernate,我可以做这个答案解释的事情。我不需要在数据库中重新查询ID。 编辑:我试图使用lastInsertId方法,但出

  • 我有许多列(在Excel文件中)表示一年中的月份;每一列都有许多记录,我希望能够运行一个宏,在每一列的最后一行插入一个平均值为的单元格。每列的第一个单元格是标题,因此我需要包括从第2行到列中最后一条记录的单元格。每次使用宏时,列和行的数量都会有所不同。我将非常感谢你的帮助。谢谢

  • 我正在尝试获取firstOrCreate()调用后在数据库中插入的最后一个ID。我已将代码复制到下面: 如何插入最后一个ID? 我已经研究了其他Laravel请求来获取最后一个插入标识,但我相信这个实例是不同的,因为它们没有使用firstOrcreate()。 提前谢谢。

  • 我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。