今回のテーマ
今回はC#でExcelをいじることが出来るClosedXML.Excelについての記事です。
この記事ではファイルの開き方など基本的な操作を行いたいと思います。
それでは、早速みていきましょう!!
ClosedXMLのインストール
まずはVisual Studio上でClosedXMLをインストールしましょう!!
step
1「ツール」⇒「NuGetパッケージマネージャー」⇒「ソリューションのNuGetパッケージ管理」を押します。
step
2「ClosedXML」で検索を行い、インストールをしましょう。
step
3下記のように指定して、インポートすれば使用できます。
1 |
using ClosedXML.Excel; |
ファイルの新規作成、ファイルを開く
XLWorkbookのインスタンスを生成することで、Excelをいじる準備ができます。
1 |
XLWorkbook book = new XLWorkbook(); |
既に置いてあるExcelファイルを開く場合は、下記のようにパスを指定します。
1 |
XLWorkbook book = new XLWorkbook(@"D:\exceltest\excel.xlsx"); |
ファイルの保存
ファイルの保存はSaveAsメソッドを使用します。下記のように、パスを指定することで保存できます。
1 |
book.SaveAs(@"D:\exceltest\excel.xlsx"); |
シートの追加方法と指定方法
Excelにはシートが付き物ですね。下記のように指定するとシートを追加することができます。
引数にはシート名を指定します。
1 |
book.AddWorksheet("exceltest"); |
実行を一度もしないと、実感が湧かないと思うので、下記のソースコードを実行してみましょう!
パス名は正しく指定してくださいね!
1 2 3 4 5 6 7 8 9 10 11 12 |
using ClosedXML.Excel; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(); book.AddWorksheet("exceltest"); book.SaveAs(path); } } |
出力結果
指定したパスにExcelファイルができていて、シート名も「exceltest」となっていると思います。
セルの値の読み取り方法
先ほど、作成したExcelに下記のようにポケモンを入力しました。
読み取り方法は複数ありますが、今回はCellメソッドとCellsメソッドで読み取ってみましょう!
下記はCellメソッドを使用して、A1のセルを読み取った例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); var cell = book.Worksheet("exceltest").Cell(1, 1); Console.WriteLine(cell.Value); } } |
出力結果
フシギダネ
Cellメソッドの引数は行と列の番号を指定しています。
返り値はIXLCell型で、様々なプロパティを持っています。値を取得する時はValueプロパティを指定してあげましょう。
Cellメソッドでは、「A1」のように取得することも出来ます。
1 |
book.Worksheet("exceltest").Cell("A1"); |
複数のセルを一度に読み取りたい時は、どうすればいいでしょうか。
その通りです!!例をみてみましょう!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); for(var i = 1;i <= 4; i++) { var cell = book.Worksheet("exceltest").Cell(i,1); Console.WriteLine(cell.Value); } } } |
出力結果
フシギダネ
ヒトカゲ
ゼニガメ
ポッポ
出力することが出来ました!
列に関しては2重for文にすれば解決ですね^^
とはなりませんね 😉
この方法でも出来ることはできますが、ソースコードがどんどん分かりにくくなっていくのが見えてます。
そこで、使用するのがCellsメソッドです!
Cellメソッドより、Cellsメソッドを覚えてください!!
cellsメソッドは名前の通り、複数のセルを指定することができます。
このメソッドが中々優れもので、受け取った値にLinqを使うことも出来ます。
今回の例では、Linqを使用せずに複数のセルを出力してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); var cells = book.Worksheet("exceltest").Cells("A1:C4"); foreach(var cell in cells) { Console.WriteLine(cell.Value); } } } |
出力結果
フシギダネ
フシギソウ
フシギバナ
ヒトカゲ
リザード
リザードン
ゼニガメ
カメール
カメックス
ポッポ
ピジョン
ピジョット
A1からC4までの値を一度に読み取ることが出来ましたね!
2重For文など使うことなく処理を実装することが出来ました。
順番はA1、B1、C1、A2、B2・・といった順であることも覚えておきましょう。横に遷移するのが優先です。
ClosedXML.Excelを使用する時はCellsメソッドは絶対覚えておきましょう!
まとめ
今回はClosedXML.Excelについての記事でした。下記に今回使用したメソッドを纏めます。
こんな方におすすめ
- XLWorkbookのインスタンス生成:Excelファイルを開く、新規作成
- AddWorksheetメソッド:シートの追加
- SaveAsメソッド:ファイルの保存
- Cellメソッド:指定したセルを取得。
- Cellsメソッド:指定したセルを複数個取得する。
この中で特に覚えてほしいのは、Cellsメソッドですかね。これからも何記事か書く予定ですが、Cellsメソッドは沢山使って行くつもりです。
これからもExcel操作についての記事を書いていくので、ぜひ見てくださいね!!
それでは、最後まで見て頂き、ありがとうございました!
次回の記事はこちらです!!Excelファイルの書き込み方法についてです!
こちらもCHECK
-
【C# sharp】ClosedXML.Excelで有能なInsertDataメソッドの使い方
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
ファイルについての記事はこちら