前提・実現したいこと
VisualStudio2022(2019)でClosedXMLを使用し「画像を貼り付けたエクセルファイル」を生成する際、例外が発生します。
理由・回避方法についてご存じの方、教えてください。
よろしくお願いします。
発生している問題・エラーメッセージ
生成したビットマップ ( new Bitmap( width, height ) )で生成した画像を AddPicture()に指定すると
System.ArgumentNullException: '値を Null にすることはできません。
パラメーター名:encoder'
が発生します。
該当のソースコード
C#
1/// <summary> 2/// ボタン1をクリックしたときの処理です</summary> 3/// <param name="sender">送信元情報</param> 4/// <param name="e">イベント情報</param> 5private void button1_Click(object sender, EventArgs e) 6{ 7 // 画像ファイルから生成した imgは AddPicureできるが、new Bitmap(幅,高さ)で生成した画像は例外が発生する 8 var imagePath = @"....\メジロ@神出神社 - 20210220B_2138_cr.jpg"; // 実行ファイルの2段上位フォルダ内 9 using (var www = new Bitmap(imagePath) ) 10 using (var img = new Bitmap(www.Width / 5, www.Height / 5, PixelFormat.Format24bppRgb)) 11 using (var gra = Graphics.FromImage(img)) 12 using (XLWorkbook wb = new XLWorkbook()) 13 { 14 // 縮小画像の描画 15 gra.DrawImage(www, 0, 0, img.Width, img.Height); 16 17 //ワークシートの設定 18 var ws = wb.AddWorksheet("Sheet1"); 19 20 // AddPictureメソッドで画像を挿入 【OK 1】 21 //var image = ws.AddPicture(imagePath); 22 23 // AddPictureメソッドで画像を挿入 【OK 2】 24 //var image = ws.AddPicture(www); 25 26 // AddPictureメソッドで画像を挿入 【Error System.ArgumentNullException発生】 27 var image = ws.AddPicture(img); 28 29 30 // (2,2)に移動 31 image.MoveTo(ws.Cell(2, 2)); 32 33 // ワークブックを保存(実行ファイルと同じフォルダ) 34 wb.SaveAs("file.xlsx"); 35 } 36} 37
試したこと
ファイルから生成した場合(上記ソースコメント【OK 1】【OK 2】では、問題ないが(例外発生しない)
new Bitmap( 幅、高さ)の形で生成した画像だと例外が発生する?
補足情報(FW/ツールのバージョンなど)
Visual Studio 2022 (2019でも同様)
.NetFramework 4.8
ClosedXML (nugetで取得) 0.95.4
回答1件
あなたの回答
tips
プレビュー