无法设置范围类 c# excel 互操作的隐藏属性
本文关键字:互操作 隐藏 属性 excel 设置 范围 | 更新日期: 2023-09-27 18:31:14
我正在尝试在 Excel 范围对象上设置 Hide=false,但不断收到"无法设置范围类的隐藏属性"异常。 我的工作表不受保护,并且该范围内没有合并的单元格。
我是这样做的:
reportSheet.Unprotect("foo");
int maxUsedRow = reportSheet.UsedRange.Rows.Count;
int maxUsedColumn = reportSheet.UsedRange.Columns.Count;
reportSheet.Cells.Range["A5", reportSheet.Cells[maxUsedRow, maxUsedColumn]].Hidden = false;
有趣:1.我从来没有在代码中的任何地方显式将Hidden 属性设置为 true,但这就是编程操作后的结果。2.如果我执行以下操作,我不会收到此错误,但它也不起作用。
int rowNum = 5;
reportSheet.Rows[rowNum].Hidden = false;
有什么想法吗?
我
试图在新项目中重新创建这种行为,我意识到现有代码中的某些内容一定在设置隐藏属性。 我通过它进行了调试,发现它是FormulaHidden 属性。 这是否可以重写 Hidden 属性并阻止它以编程方式重置,因为它取代了隐藏?
我相信你想要EntireRow
和EntireColumn
属性。 正如@StephenRoss正确指出的那样,您本身无法真正隐藏范围。 您可以隐藏/取消隐藏行和列,但不能隐藏单元格 B34。 因此,我认为Hidden
不适用于任何不是行或列的实体。
下面是如何根据代码片段取消隐藏从 A5 到数据末尾的每一行和每一列的示例:
int maxUsedRow = reportSheet.UsedRange.Rows.Count;
int maxUsedColumn = reportSheet.UsedRange.Columns.Count;
Excelx.Range r = reportSheet.Cells[maxUsedRow, maxUsedColumn];
reportSheet.Range["A5", r.Address].EntireColumn.Hidden = false;
reportSheet.Range["A5", r.Address].EntireRow.Hidden = false;