【C#】ClosedXMLでExcelに画像を埋め込む方法【余白・縮尺】

【C#】ClosedXMLでExcelに画像を埋め込む方法【余白・縮尺】

今回はC#のライブラリであるClosedXMLでExcelに画像を埋め込む方法と、画像の位置をセル内で調整する方法、画像の縮尺を調整する方法を紹介します。

目次

ClosedXMLでの画像の貼り付け

ClosedXMLはExcelがインストールされていない環境でExcelファイルを操作できるライブラリです。まず、ClosedXMLを使うには、ClosedXMLライブラリの追加と、プログラム行頭のusingの記述が必要になります。

usingの記述
1using ClosedXML.Excel;
2using ClosedXML.Excel.Drawings;

ClosedXMLでの画像の貼り付けには、AddPictureメソッドを使います。例として、ExcelファイルのA2セルに画像を貼り付けるサンプルコードを紹介します。

Program.cs
 1using ClosedXML.Excel;
 2using ClosedXML.Excel.Drawings;
 3
 4class Program
 5{
 6  static void Main(string[] args)
 7  {
 8    using (XLWorkbook wb = new XLWorkbook()){
 9      // ワークシートの設定
10      IXLWorksheet ws = wb.AddWorksheet("Sheet1");
11 
12      // AddPictureメソッドで画像を貼り付け
13      IXLPicture image = ws.AddPicture(@"test.png");
14
15      // 画像の位置をB2セルの左上に移動
16      image.MoveTo(ws.Cell(2, 2));
17 
18      // ワークブックを保存
19      wb.SaveAs(@"excel.xlsx");
20    }
21  }
22}   

コードを実行し、作成したエクセルのスクリーンショットになります。

ClosedXMLでの画像貼り付け

ClosedXMLでの画像貼り付け

画像の位置をセル内で調整する方法

上記のサンプルコードではMoveToメソッドでセルを指定しており、セルの左上に合うように画像が移動されます。セル内で余白を持たせたい場合、引数を追加しxとyの余白をポイント単位で指定します。

Program.cs
1IXLPicture image = ws.AddPicture(@"C:\test\image.jpg");
2
3// 画像を右・下に10ポイントずつずらす 
4image.MoveTo(ws.Cell(2, 2), 10, 10);
画像の位置の調整

画像の位置の調整

最初と比べ、画像の位置が微妙に変化したことが分かります。

画像の縮尺を調整する方法

画像の縮尺を調整したい場合は、Scaleメソッドを使います。引数に倍率を指定します。高さと幅を別々に調整したい場合は、それぞれScaleHeightメソッドとScaleWidthメソッドを使います。

Program.cs
 1IXLPicture image = ws.AddPicture(@"C:\test\image.jpg");
 2
 3// 画像を等倍で0.5倍にする
 4image.Scale(0.5);
 5
 6// 画像の高さを2倍にする
 7image.ScaleHeight(2);
 8
 9// 画像の幅を2倍にする
10image.ScaleWidth(2);

等倍で0.5倍とすると、画像が小さくなったことが分かります。

画像の縮尺の調整

画像の縮尺の調整


今回はClosedXMLでのExcelの画像埋め込みについて紹介しました。以上で記事を終わりにします。

参考文献

関連記事