今回はC#でExcelファイルを読み込む方法について紹介します。なお今回の環境は.NET6です。
ClosedXMLのインストール
今回はClosedXMLを用いて実装します。closedXMLはNuGetでインストールします。
Visual Studioをお使いの場合、[ツール] > [NuGet パッケージ マネージャー] > [パッケージマネージャーコンソール] からインストールできます。
※1つ下のNuGetパッケージの管理からもインストールできます
コンソール画面が出るので、以下コマンドを実行します。
Install-Package ClosedXML -Version 0.100.3
現時点では0.100.3が最新ですが、皆さんがご覧になっている時点での最新バージョンを知りたい場合は、以下URLにアクセスして確認してください。
https://www.nuget.org/packages/ClosedXML#readme-body-tab
読み込むExcel
今回は以下のような簡単なExcelファイルを読み込んでみます。
コード全体
それでは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ファイルを読み込むことができるので、是非試してください!
ではでは👋