我有一个工作表,其中隐藏了某些数据,我需要确保在隐藏数据时不会显示该数据(隐藏的列会经常更改)。
如何检测哪些列被隐藏?
问这个问题后不久,我通过查看对象中的列元数据找到了答案。您可以从工作表中的 GridData 对象获取列元数据。它有一些属性,如 HiddenByFilter、HiddenByUser 和 PixelSize。该代码对我有用,但其他人需要根据自己的需要对其进行修改,例如更改他们正在使用的工作表。
public List<int> GetHiddenColumns(string spreadsheetId, string sheetRange)
{
List<int> hiddenColumns = new List<int>();
// Retrieve the sheet properties to determine column visibility
var sheetRequest = _sheetsService.Spreadsheets.Get(spreadsheetId);
sheetRequest.Ranges = new[] { sheetRange };
sheetRequest.IncludeGridData = true;
var sheetResponse = sheetRequest.Execute();
if (sheetResponse.Sheets != null && sheetResponse.Sheets.Count > 0)
{
var sheetProperties = sheetResponse.Sheets[0];
var rowData = sheetProperties.Data.FirstOrDefault();
for (int columnIndex = 0; columnIndex < rowData.ColumnMetadata.Count; columnIndex++)
{
var columnMetadata = rowData.ColumnMetadata[columnIndex];
if (columnMetadata.HiddenByUser == true) hiddenColumns.Add(columnIndex);
}
}
return hiddenColumns;
}