【发布时间】:2021-08-29 03:26:19
【问题描述】:
我需要更改某些单元格的文本颜色,同时使用 Sheets API v4 保留其余格式。 我在 how-to-read/write-google-sheets-with-c# 中跟踪了一个样本到 ForeColor 的单元格范围。
if (foreColor != System.Drawing.Color.Empty)
{
var spreadsheet = await service.Spreadsheets.Get(_spreadsheetId).ExecuteAsync();
var sheet = spreadsheet.Sheets.First(s => s.Properties.Title == worksheetTitle);
int sheetId = sheet.Properties.SheetId ?? 0;
var cellFormat = new CellFormat
{
TextFormat = new TextFormat
{
ForegroundColor = new Color
{
Alpha = foreColor.A / 255f,
Red = foreColor.R / 255f,
Green = foreColor.G / 255f,
Blue = foreColor.B / 255f,
}
}
};
CellData getFormatted() => new CellData { UserEnteredFormat = cellFormat };
var request = new Request
{
UpdateCells = new UpdateCellsRequest
{
Start = new GridCoordinate
{
SheetId = _sheetId,
ColumnIndex = startColumnIndex,
RowIndex = rowNumber - 1,
},
Fields = "*",
Rows = new List<RowData> { new RowData {
Values = new List<CellData>
{
getFormatted(), // details
getFormatted(), // system type
getFormatted(), // price
getFormatted(), // primary cost
getFormatted(), // secondary cost
getFormatted(), // accepted
}
} },
},
};
var requests = new BatchUpdateSpreadsheetRequest
{
ResponseIncludeGridData = true,
Requests = new List<Request> { request },
};
var response = await service.Spreadsheets.BatchUpdate(requests, spreadsheet.SpreadsheetId).ExecuteAsync();
}
上述代码的问题在于,虽然它确实改变了文本颜色,但它也清除了所有单元格值和现有格式 - (如边框、文本对齐等)。
有没有办法只更新单元格文本颜色?
【问题讨论】:
标签: c# google-sheets-api