Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / productivity / Office

How to Hide a Range of Rows in Excel with C#

4.83/5 (4 votes)
12 Nov 2015CPOL 21.1K  
Hiding Excel Ranges (span of rows and columns) using Excel Interop (C#)

Hide Boring or Seldom-Used Data

In Excel, you can sweep data under the virtual carpet by making it hidden (never fear - the stalwart user can unhide them via the Home Tab, Cells section, Format > Hide & Unhide - after first selecting the previous and following rows).

Anyway, hiding a span of rows and columns you specify couldn't be a heck of a lot easier. Here's how you do it, in two easy steps:

  1. Name your worksheet:
    C#
    private Worksheet _xlSheet;
  2. Now, name a range, including the first row and column to hide and then the last row and column to hide, like so:
    C#
    var hiddenRange = yourWorksheet.Range[_xlSheet.Cells[42, 1], _xlSheet.Cells[999, 13]];
    hiddenRange.EntireRow.Hidden = true;

    This assumes the first row you want to hide is 42, etc. Obviously, you will want to change these hardcoded values.

As an example, here's some actual code, using constants and variables instead of hardcoded vals, which responds to a boolean whose value indicates whether the range should be hidden or not:

C#
private bool _hide;
private int _curTopRow;
private static readonly int ITEMDESC_COL = 1;
private static readonly int TOTALS_COL = 16;
. . .
if (_hide)
{
    var hiddenRange = _xlSheet.Range[_xlSheet.Cells[_curTopRow, ITEMDESC_COL], 
    				_xlSheet.Cells[_curTopRow+3, TOTALS_COL]];
    hiddenRange.EntireRow.Hidden = true;
}

Note that you need to reference the Microsoft.Office.Interop.Excel assembly.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)