ClosedXMLによるExcelの操作・その1

とりあえずClosedXMLを使う

今回はC#Excelを操作します。 C#ではNPOI、NetOffice、EPPlusといったパッケージや、.NET FrameworkからCOMコンポーネントを使ってExcelを操作することができます。 ここでは ClosedXML というパッケージを使ってみたいと思います。 現段階ではどの方法が最も効率がいいかということは分かりませんが、ネット上の「ClosedXMLが直観的で使いやすい」という情報をもとにClosedXMLを選択した次第です。

ちなみに、COMコンポーネントを使う方法については、リソースを開放するコードを自分で実装しないといけないので、いくらか手間がかかってしまいます。 しかし、ClosedXMLではできないが、COMならできることもありますので(チャートの挿入など)、いずれはCOMコンポーネントを触らなければならない状況も出てくると思われます。 ま、それはともかく、以下にずらずらっと実行コードを並べていきたいと思います。

実行コード

  • using部分
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq; 
using System.Text;
using System.Threading.Tasks;
using ClosedXML.Excel;
  • ワークブックを開き、ワークシートを追加し、特定のセルに値を代入
var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("WorksheetName");
ws.Cell("A1").Value = "Hello World!";
  • ワークブックを保存
workbook.SaveAs("Workbook.xlsx");
  • 特定の範囲を指定し、その範囲内のセルでは入力した数字を円単位で表示
var range = ws.Range("B2:B100");
range.Style.NumberFormat.Format = " #,##0 円";
  • プルダウンリストからセルに入力できるようにする
var namelist = new string[] { "高橋幸宏", "坂本龍一", "細野晴臣" };
string join = string.Join(",", namelist);
string insertstring = $"\"{join}\"";
var cell = ws.Cell(1, 1);
cell.DataValidation.List(insertstring);
  • 隠れた形でコメントを挿入する
ws.Cell("A1").Comment
.SetAuthor("Taro")
.AddSignature()
.AddText("Hello!");
  • 見える形でコメントを挿入する
ws.Cell("A1").Comment.SetVisible()
.SetAuthor("Hanako")
.AddSignature()
.AddText("Good Night!");
  • 「値が100以上なら背景を赤色にする」という条件付き書式を設定
ws.Range("C2", "C100").AddConditionalFormat().WhenGreaterThan(100)
.Fill.SetBackgroundColor(XLColor.Red);

終わりに

今回はClosedXMLを使ってC#から、基本的なExcel操作をするコードを載せてみました。 ClosedXMLの使い方はgithubのwikiに掲載されていて、ここを見ればやりたいことは大体できるのではないでしょうか。 日本語・英語を含めて、結構ググれば情報は見つかりますし、ちょっとC#からExcelをいじってみたいなという人にはいいと思います。

また、図表の挿入などやりたいことを一通り試した後、簡単な入力フォームを作成したら、記事をUPしてみたいと思います。