C#・VBのライブラリであるClosedXMLでExcelに画像を埋め込む方法と、画像の位置をセル内で調整する方法、画像の縮尺を調整する方法を紹介します。
ClosedXMLはExcelがインストールされていない環境でExcelファイルを操作できるライブラリです。まず、ClosedXMLを使うには、ClosedXMLライブラリの追加と、プログラム行頭のusing
の記述が必要になります。
1using ClosedXML.Excel;
2using ClosedXML.Excel.Drawings;
ClosedXMLでの画像の貼り付けには、AddPictureメソッド
を使います。例として、ExcelファイルのA2セルに画像を貼り付けるサンプルコードを紹介します。
C#でのサンプルコードは以下になります。
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倍とすると、画像が小さくなったことが分かります。
VisualBasicの場合では、以下のようになります。
まず、画像の貼り付けのコードです。
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の画像埋め込みについて紹介しました。以上で記事を終わりにします。