2016-01-20 53 views
0

我想在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屬性。這是否可以覆蓋隱藏屬性,並防止它以編程方式重置,因爲它超過了隱藏?

+0

嘗試調試它,並找出你傳遞的其他範圍以確保它是有效的。 –

+0

我相信設置'Range'的'Hidden'屬性'Range'必須跨越整行或整個列。我不相信在你的第一個片段中,你跨越整個行或列。當您選擇整個第五排時,您的第二個片段看起來更有可能起作用。 –

+0

變化之風,我相信我通過我的第一個片段的範圍是有效的。什麼會使它失效? – rsnell

回答

0

我相信你想EntireRowEntireColumn屬性。正如@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; 
相關問題