我正在尝试在Excel Range对象上设置Hide = false,并且我继续得到"无法设置Range类的隐藏属性"例外。我的工作表没有受到保护,我在该范围内没有合并的单元格。
我这样做:
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属性并阻止它以编程方式重置,因为它会超过Hidden吗?
答案 0 :(得分:0)
我相信你想要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;