【c#】Excelファイルを読み込む方法

  • 2023年2月17日
  • 2023年3月2日
  • C#
C#

今回はC#でExcelファイルを読み込む方法について紹介します。なお今回の環境は.NET6です。

ClosedXMLのインストール

今回はClosedXMLを用いて実装します。closedXMLはNuGetでインストールします。

Visual Studioをお使いの場合、[ツール] > [NuGet パッケージ マネージャー] > [パッケージマネージャーコンソール] からインストールできます。

※1つ下のNuGetパッケージの管理からもインストールできます

nugetするためにパッケージマネージャーコンソールを開く

コンソール画面が出るので、以下コマンドを実行します。

Install-Package ClosedXML -Version 0.100.3

現時点では0.100.3が最新ですが、皆さんがご覧になっている時点での最新バージョンを知りたい場合は、以下URLにアクセスして確認してください。

https://www.nuget.org/packages/ClosedXML#readme-body-tab

読み込むExcel

今回は以下のような簡単なExcelファイルを読み込んでみます。

sample.xlsx
sample.xlsx

コード全体

それではExcelを読み込む簡単なコードを以下に載せます。読み込んだ値をコンソールに出力するとともに、2列の値をそれぞれリストに格納します。

using ClosedXML.Excel;

// Excelファイルを開く
using XLWorkbook wb = new XLWorkbook("C:\\Project\\CSharp\\readexcel\\sample.xlsx");

// 読み込むシートを選択(例は先頭のシート)
var ws = wb.Worksheet(1);

List<string> listA = new List<string>();
List<string> listB = new List<string>();

// セルの値を読み取り
//行数だけ繰り返す
for (int row = 1; row <= ws.LastRowUsed().RowNumber(); row++)
{
    //列数だけ繰り返す
    for (int col = 1; col <= ws.LastColumnUsed().ColumnNumber(); col++)
    {
     //文字列型に変換
        string value = ws.Cell(row, col).Value.ToString();
        Console.Write(value + "\t");

        //1列目(A列)
        if (col == 1)
        {
            listA.Add(value);
        }
        //2列目(B列)
        else if (col == 2)
        {
            listB.Add(value);
        }

    }
}

解説

先頭でClosedXML.Excelを宣言した後、読み込みたいExcelファイルを指定して読み込みます。

using ClosedXML.Excel;

// Excelファイルを開く
using XLWorkbook wb = new XLWorkbook("C:\\Project\\CSharp\\readexcel\\sample.xlsx");

XLWorkbook型のwbは、Excelワークブックのオブジェクトです。次に読み込みたいシートを指定します。

// 読み込むシートを選択(例は先頭のシート)
var ws = wb.Worksheet(1);

例では引数に1を指定していますが、これは左から1番目のシート(先頭)を意味します。2つ目のシートの場合は2、3つ目は3…といったように指定します。また、シート名での指定も可能です。

続いて、指定したシートからデータを取得していきます。

// セルの値を読み取り
//行数だけ繰り返す
for (int row = 1; row <= ws.LastRowUsed().RowNumber(); row++)
{
    //列数だけ繰り返す
    for (int col = 1; col <= ws.LastColumnUsed().ColumnNumber(); col++)
    {
    //文字列型に変換
        string value = ws.Cell(row, col).Value.ToString();
        Console.Write(value + "\t");

        //1列目(A列)
        if (col == 1)
        {
            listA.Add(value);
        }
        //2列目(B列)
        else if (col == 2)
        {
            listB.Add(value);
        }

    }
}

例ではまず行を取得し、その後列数だけ値を取得していきます。、1列目の値はlistA、2列目の値はlistBに格納していきます。

まとめ

C#でExcelファイルを読み込む方法を紹介しました。ClosedXMLを用いれば簡単にExcelファイルを読み込むことができるので、是非試してください!

ではでは👋