エクセルを操作する方法を考えていたい時に、VBAもいいけどC#で動かせないかなーと思って探したらライブラリを見つけたのでコンソールアプリで使ってみました。
実行環境
Visual Studio 2019 for Mac
Mictrosoft.NETCoreApp 3.1.0
準備(コンソールアプリケーションの作成)
Visual Studio for Macをで新規プロジェクトを作成します。以下の画像のように.NET Core
のConsole Application
を選択して新規プロジェクトを作ります。
NuGetパッケージのインストール
プロジェクトを作成したらパッケージをインストールします。メニューバーのProject
からManage NuGet Packages...
を選択します。
"ClosedXML"で検索すると検索結果の一番上に出てくるのでインストールしましょう。
これで準備完了です。
エクセルの操作
Program.csにコードを書いていきましょう。以下は使い方の一例です。
using System; using System.Data; using ClosedXML.Excel; namespace consoleAppCore { class Program { static void Main(string[] args) { //ファイルパスの指定 var path = "[エクセルファイルパス]"; //エクセルを開く using (var wb = new XLWorkbook(path)) { //シートの指定 var sheet = wb.Worksheet("Sheet1"); //テーブルを設定 var table = wb.Table("Table1"); //A1セルの値を取得 var cellA1value = sheet.Cell("A1").Value; //アドレスを数字でも指定可能 var cellA3value = sheet.Cell(3,1).Value; //A1セルに値を設定 sheet.Cell("A1").SetValue("test"); //アドレスを数字でも指定可能 sheet.Cell(1, 1).SetValue("test"); //A3セルのハイパーリンクを取得 var hyperlink = sheet.Cell("A3").Hyperlink.ExternalAddress; //テーブル内の値を列挙する foreach (var row in table.DataRange.Rows()) { //現在の行の全セルを取得 var cells = row.Cells(); //それぞれのセルに記載されている値を表示 foreach (var cell in cells) { Console.Write(cell.Value); Console.Write(" "); } Console.WriteLine(); } //データテーブル型の変数を作成 var newData = new DataTable(); newData.Columns.Add("Comumn1", typeof(string)); newData.Columns.Add("Comumn2", typeof(string)); newData.Columns.Add("Comumn3", typeof(string)); newData.Rows.Add("111", "222", "333"); //テーブルに行を追加 table.AppendData(newData); //エクセルファイルを保存する wb.Save(); } } } }
C#でもエクセルを操作できるってなんかいいですね!
これ以外にもいろいろな使い方があるようなので、詳しくは公式ドキュメントをご覧ください。