この記事の目的
この記事では、
ClosedXMLでExcelに画像を貼り付けること
を目的としています。
本題
★サンプルコード
以下のFAQにもあるようにClosedXMLで画像の添付がサポートされていました!
github.com
ちょうどExcelに画像を貼り付けていくプログラムを作っていたので、
画像を貼り付けるサンプルコードを作ってみました。
static void Main(string[] args) { var cellHeight = 18; //試行錯誤の結果の数字 var row = 1; using (var wb = new XLWorkbook()) { //ワークシートの設定 var ws = wb.AddWorksheet("Sheet1"); //貼り付ける画像を指定 var imagePath = @"./Resource/image.jpg"; //タイトルとしてA1セルに文字を出力 ws.Cell($"A{row}").Value = "これ食べたい"; row++; //ワークシートの変数のAddPictureメソッドを呼び出す //左端がB2のセルになるように画像を移動する var image = ws.AddPicture(imagePath).MoveTo(ws.Cell($"B{row}").Address); //画像の左端のセル番号を計算してみる・・・ row += (int)(image.Height / cellHeight); //画像にかぶらないように値を出力する ws.Cell($"A{row}").Value = "以上です。"; wb.SaveAs("file.xlsx"); } }
※出力結果の例は以下の通りです
★課題!
画像の左端のセルの番号の計算をするとき、
dpiとか全く考慮せずに良い感じになる値を使って計算しています。
自分の環境では、うまいこと計算できていますが、
ほかの環境下では動きそうもありませんw
計算方法を考え直さないと・・・