我正在使用此Java代码从Java应用程序生成Google表格数据。
List < RowData > rowDataValues = new ArrayList < > ();
List < CellData > headerValues = new ArrayList < > ();
headerValues.add(new CellData().setNote("ID")
.setUserEnteredValue(new ExtendedValue()
.setStringValue("#")).setUserEnteredFormat(myFormat));
.setStringValue("Environment")).setUserEnteredFormat(myFormat));
.........
headerValues.add(new CellData()
.setUserEnteredValue(new ExtendedValue()
.setStringValue("Name")).setUserEnteredFormat(myFormat));
RowData setHeaderValues = new RowData();
setHeaderValues.setValues(headerValues);
rowDataValues.add(setHeaderValues);
requests.add(new Request()
.setUpdateCells(new UpdateCellsRequest()
.setStart(new GridCoordinate()
.setSheetId(randomSheetId)
.setRowIndex(0)
.setColumnIndex(0))
.setRows(rowDataValues)
.setFields("*")));
BatchUpdateSpreadsheetRequest body = new BatchUpdateSpreadsheetRequest().setRequests(requests);
BatchUpdateSpreadsheetResponse response = service.spreadsheets().batchUpdate(spreadsheetId, body).execute();
如何为每列设置自定义宽度?
更新:
到目前为止,这是我尝试过的:
new UpdateDimensionPropertiesRequest().setRange(
new DimensionRange()
.setDimension("COLUMNS")
.setStartIndex(0).setEndIndex(1)
)
.setProperties(new DimensionProperties().setPixelSize(400)).setFields("pixelSize"));
最佳答案
您需要创建UpdateDimensionPropertiesRequest。在您的情况下,您可以使用此示例代码,这会增加第一列(startIndex = 0, endIndex = 1)
的大小。
requests.add(new Request().setUpdateDimensionProperties(
new UpdateDimensionPropertiesRequest()
.setRange(
new DimensionRange()
.setSheetId(randomSheetId)
.setDimension("COLUMNS")
.setStartIndex(0)
.setEndIndex(1)
)
.setProperties(new DimensionProperties().setPixelSize(400)).setFields("pixelSize"))));
在这里,我使用
setDimension("COLUMNS")
来更改列的宽度,可以通过使用setDimension("ROWS")
来更改行的高度。@PeterPenzov 's comment的其他问题:
我收到“无效的requests.updateDimensionProperties:ID为0的无网格”,
如果您的sheetId设置不正确,则会收到此错误。
根据API v4文档,SheetId是;
电子表格中的各个工作表具有标题(必须唯一)和ID。在Sheets API中经常使用sheetId来指定要读取或更新的工作表
因此,您需要设置
sheetId
对象的DimensionRange
。在您的情况下,您需要将sheetId
用作randomSheetId
(我已经更新了上面的代码)。Spreadsheet spreadsheet = service.spreadsheets().get(spreadsheetId).execute();
spreadsheet.getSheets().stream()
.map(s->s.getProperties().getSheetId())
.forEach(System.out::println);