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

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

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

ClosedXMLでの画像の貼り付け

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

1using ClosedXML.Excel;
2using ClosedXML.Excel.Drawings;

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

C#でのサンプルコードは以下になります。

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}   

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

No image found

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

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

C#でのサンプルコードは以下になります。

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

No image found

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

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

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

C#でのサンプルコードは以下になります。

 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);

No image found

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

VBの場合

VisualBasicの場合では、以下のようになります。

まず、画像の貼り付けのコードです。

Program.vb
 1Imports ClosedXML.Excel
 2Imports ClosedXML.Excel.Drawings
 3
 4Class Program
 5    Private Shared Sub Main(ByVal args As String())
 6        Using wb As XLWorkbook = New XLWorkbook()
 7            ' ワークシートの設定
 8            Dim ws As IXLWorksheet = wb.AddWorksheet("Sheet1")
 9            ' AddPictureメソッドで画像を貼り付け
10            Dim image As IXLPicture = ws.AddPicture("test.png")
11            ' 画像の位置をB2セルの左上に移動
12            image.MoveTo(ws.Cell(2, 2))
13            ' ワークブックを保存
14            wb.SaveAs("excel.xlsx")
15        End Using
16    End Sub
17End Class

次に、画像の位置をセル内で調整するコードになります。

1Dim image As IXLPicture = ws.AddPicture("C:\test\image.jpg")
2
3' 画像を右・下に10ポイントずつずらす 
4image.MoveTo(ws.Cell(2, 2), 10, 10)

次に、画像の縮尺を調整するコードになります。

 1Dim image As IXLPicture = 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)

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

参考文献