我的目的是清除所有数据表。
我尝试了 worksheet.getusedRange()。clear()方法,但是它只清除数据和格式,但隐藏的行仍然保持隐藏状态。即使 worksheet.getUsedRange()。delete('up')也不会删除行的取消隐藏属性。
我发现的唯一解决方法是执行 worksheet.getUsedRange.rowHidden = False ,然后执行 worksheet.getUsedRange()。delete(),这将取消隐藏行工作范围,但不会取消隐藏超出范围的行(即,如果数据/格式存在于row10之前,但行100被隐藏,则此方法不会取消隐藏第100行)
当我尝试 worksheet.getRange()。rowHidden = false 时,它将引发错误->“错误:InvalidOperation:当前对象不允许执行此操作。”
有什么方法可以像在excel UI中那样删除工作表行,以便甚至删除行的hidden属性。
我正在使用Excel Online
答案 0 :(得分:1)
您已经发现,getUsedRange
方法仅返回包含数据或格式的单元格范围。如果工作表包含超出包含数据/格式的单元格范围的隐藏/空行,则这些隐藏/空行将不包含在getUsedRange
方法返回的范围内。
要实现清除所有数据表(包括任何空但隐藏的行)的目标,您可以考虑执行以下操作:
使用getRange
方法检索您确信足够大的范围以容纳工作表上的任何数据(和/或空的,隐藏的行)。
取消隐藏该范围内的所有行。
删除该范围。
下面的代码示例说明了这种方法。请注意,它指定了范围A1:KK20000
,但是您可以将其设置为您认为足够大的值,以容纳工作表上的数据(和/或空的,隐藏的行)。
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getItem("Sample");
const range = sheet.getRange('A1:KK20000');
range.rowHidden = false;
range.delete(Excel.DeleteShiftDirection.up);
context.sync();
});
或者,您可以使用API删除工作表,然后立即在其位置创建一个新的(空的)名称相同的表...尽管这可能比我在第一种方法上对用户的视觉干扰更大描述。