无法设置范围类的隐藏属性c#excel interop
问题描述:
我想在Excel范围对象上设置Hide = False,并且不断设置“无法设置Range类的隐藏属性”异常。我的工作表不受保护,我没有合并单元格。无法设置范围类的隐藏属性c#excel interop
我这样做是这样的:
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.不要在代码的任何地方,我会明确的隐藏属性设置为true,然而这是程序操作后,什么样的结果。 2.如果我执行以下操作,则不会收到此错误,但它也不起作用。
int rowNum = 5;
reportSheet.Rows[rowNum].Hidden = false;
任何想法?
我试图重新创建一个新项目,这种行为,我意识到在现有代码的东西必须被设置隐藏属性。我通过它调试,发现它是FormulaHidden属性。这是否可以覆盖隐藏属性,并防止它以编程方式重置,因为它超过了隐藏?
答
我相信你想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;
尝试调试它,并找出你传递的其他范围以确保它是有效的。 –
我相信设置'Range'的'Hidden'属性'Range'必须跨越整行或整个列。我不相信在你的第一个片段中,你跨越整个行或列。当您选择整个第五排时,您的第二个片段看起来更有可能起作用。 –
变化之风,我相信我通过我的第一个片段的范围是有效的。什么会使它失效? – rsnell