gpt4 book ai didi

java - 插入行而不覆盖数据

转载 作者:行者123 更新时间:2023-12-02 03:20:55 24 4
gpt4 key购买 nike

我经常从谷歌上找到这里,自从我开始尝试为自己制作一个 Android 应用程序以来,我很困惑,因为 v4 API 不是很有帮助。我在这里搜索过,但没有看到能回答我的问题的答案。

我有一个预算电子表格。我的应用程序将从工作表中获取数据并将其过滤到我当前的工资周。这样我就可以查看我当前和 future 的所有交易,这样我就可以知道我还有多少钱可以额外花。然后,我希望能够从应用程序插入新的牵引力,比如说,如果我得到汽油,我希望能够通过几次点击来添加它,而不是尝试花几分钟在工作表应用程序中编辑工作表。后来,我计划为要放入的单元格自定义公式,并将其复制到其北部和南部的单元格,以便数学计算出来。

我用了the Android Quickstart能够足够容易地读取数据。此后,我对其进行了调整以过滤工作表数据以过滤我的数据。我什至已经尽力让它能够将数据写入工作表。问题是我在 java/android 中找不到任何与快速入门相同风格的示例来了解如何在工作表中间插入一行而不是覆盖单元格。我假设我必须在某个地方使用 INSERTDATAOPTION=INSERT_ROWS 但我找不到任何地方可以添加它。 documentation建议我使用电子表格.values.append,但 .append 永远不会显示为选项。我只得到 BatchGet、BatchUpdate、Get、Update。

我是一个初学者,我确信我的代码很笨拙,是我经过几个小时的谷歌搜索拼凑而成的,但我确信我只是错过了一些简单的东西。任何帮助,将不胜感激。

private List<String> PostDataForApi() throws IOException {
String spreadsheetID = getResources().getString(R.string.my_google_spreadsheet_id);
Integer sheetID = getResources().getInteger(R.integer.my_google_sheet_id);

List<RowData> rowData = new ArrayList<RowData>();
List<CellData> cellData = new ArrayList<CellData>();

String value = "test";
String formula = "=IF(COUNTBLANK(C510) = 2,\"\",Sum(B511+(SUM(C510))))";
String value2 = "999";

CellData cell = new CellData();
cell.setUserEnteredValue(new ExtendedValue().setStringValue(value));
CellData cell2 = new CellData();
cell2.setUserEnteredValue(new ExtendedValue().setFormulaValue(formula));
CellData cell3 = new CellData();
cell3.setUserEnteredValue(new ExtendedValue().setStringValue(value2));

cellData.add(cell);
cellData.add(cell2);
cellData.add(cell3);
rowData.add(new RowData().setValues(cellData));

BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();
BatchUpdateSpreadsheetResponse response;
List<Request> requests = new ArrayList<Request>();
AppendCellsRequest appendCellReq = new AppendCellsRequest();

appendCellReq.setSheetId(sheetID);
appendCellReq.setRows( rowData );
appendCellReq.setFields("userEnteredValue");

requests = new ArrayList<Request>();
requests.add( new Request().setAppendCells(appendCellReq));
batchRequests = new BatchUpdateSpreadsheetRequest();
batchRequests.setRequests( requests );


response = this.mService.spreadsheets().batchUpdate(spreadsheetID, batchRequests).execute();
System.out.println(response.toPrettyString());

return null;
}

最佳答案

经过一些头脑 NumPy 的把东西扔到墙上,看看什么能粘住,我想出了这个办法。我必须分两步完成。第一步将在工作表的第 32 行插入一行,这样您将得到一个空白行 33。然后第二个区域将在该空白行中插入值。我希望这对将来的人有帮助。

String spreadsheetID = getResources().getString(R.string.my_google_spreadsheet_id);
Integer sheetID = getResources().getInteger(R.integer.my_google_sheet_id);

BatchUpdateSpreadsheetResponse response;
BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();
List<Request> requests = new ArrayList<Request>();

InsertDimensionRequest insertDimensionRequest = new InsertDimensionRequest();
DimensionRange dimRange = new DimensionRange();
dimRange.setStartIndex(32);
dimRange.setEndIndex(33);
dimRange.setSheetId(sheetID);
dimRange.setDimension("ROWS");

insertDimensionRequest.setRange(dimRange);
insertDimensionRequest.setInheritFromBefore(false);
requests.add( new Request().setInsertDimension(insertDimensionRequest));
batchRequests = new BatchUpdateSpreadsheetRequest();
batchRequests.setRequests( requests );
response = this.mService.spreadsheets().batchUpdate(spreadsheetID, batchRequests).execute();
System.out.println(response.toPrettyString());

List<List<Object>> argData = getData(entryTitle, entryValue);
ValueRange vRange = new ValueRange();
vRange.setRange("2016!A33");
vRange.setValues(argData);
List<ValueRange> vList = new ArrayList<>();
vList.add(vRange);
BatchUpdateValuesRequest batchRequest = new BatchUpdateValuesRequest();
batchRequest.setValueInputOption("USER-ENTERED");
batchRequest.setData(vList);
this.mService.spreadsheets().values().batchUpdate(spreadsheetID, batchRequest).execute();

关于java - 插入行而不覆盖数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com