ここでは、NPOI をダウンロードしてプロジェクトに参照設定を追加し、簡単な動作確認を行うまでの説明をしています。
NPOI とは Java でエクセルファイルの読み書きを行う Apche POI の .Net Framework 版になります。
スポンサーリンク
NPOI のダウンロード
NPOI のダウンロードは下記のリンク先より行います。ここでは、安定版の最新である、NPOI 2.1.3.1 を使用しています。

NPOI のダウンロードページのスクリーンショット
ダウンロードした圧縮ファイルを解凍すると、readme ファイルなどとともに、dotnet2 と dotnet4 の名前でフォルダが存在して、それぞれ下記のように DLL ファイルがあります。

NPOI をダウンロードした中身
dotnet2 と dotnet4 フォルダ内の DLL の違いは、NPOI をビルドした .Net Framework のバージョンの違いのようです。ここでは dotnet4 フォルダ内の DLL を使用することにします。
プロジェクトの参照に追加
すべての DLL ファイルを参照設定でプロジェクトに追加します。

NPOI を参照に追加
NPOI 動作確認(シート名の一覧を取得)
では、実際に動作確認を行ってみます。次のサンプルコードではファイルパスを指定してそのエクセルファイル内のシート名の一覧を取得しています。
詳細はサンプル内のコメントも参照ください。
C#
//using NPOI.SS.UserModel;
// xlsx でも xls の旧フォーマットでもOK
string filePath = @"/path/to/excel.xlsx";
IWorkbook wb; // ワークブックオブジェクト
// エクセルファイルの内容を取得したら即クローズ
// FileShare.ReadWrite を設定していないと、他プロセスでファイルがオープン
// されている場合、例外が発生してしまう。
using(FileStream excelfile = new FileStream(filePath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// ワークブックオブジェクトの生成
// 第2パラメータで、テキストのみを情報を取得している
// style などの情報は取得されない
// すべての情報を取得する場合は、ImportOption.All を指定する
wb = WorkbookFactory.Create(excelfile, ImportOption.TextOnly);
}
// シート数を取得
int sheetCount = wb.NumberOfSheets;
// シート名を保存するリスト
List<string> sheetNameList = new List<string>();
// シート数分ループ
for (int i = 0; i < sheetCount; i++)
{
// シートオブジェクトを取得
ISheet sht = wb.GetSheetAt(i);
// シート名を取得して、リストに保存
sheetNameList.Add(sht.SheetName);
}