EPPlusでExcelファイルに画像を追加してみる![C#]

2022-08-09

使っているライブラリにバグがありまして。
で、そのライブラリがEPPlusを呼び出していたので動作確認とバグの切り分けを兼ねて動かしてみました。

検証するEPPlus

ver4.5.3.3
※無料で商用利用可能な最終版

コード

using System;
using System.Drawing;
using System.IO;
using OfficeOpenXml;

namespace epplus
{
    internal class Program
    {
        static void Main()
        {
            using (var xlsxFile = File.OpenRead(@"C:\jikken\test.xlsx"))
            {
                using (Image pic = Image.FromFile(@"C:\jikken\13.jpg"))
                {
                    var package = new ExcelPackage(xlsxFile);
                    var ws = package.Workbook.Worksheets[1];

                    var picture = ws.Drawings.AddPicture("picname", pic);

                    //ポジションは0からスタート 第2第4引数は位置の微調整用
                    picture.SetPosition(1, 50, 1, 50);
                    picture.SetSize(100, 100);

                    package.SaveAs(new FileInfo(@"C:\jikken\test2.xlsx"));
                }
            }
        }
    }
}

このコードで検証したこと

  • 画像が貼り付けられるかの確認
  • test.xlsxに書式設定がされていても問題なく貼り付けられるか

書式設定は思いつく限り実行。
斜体、セル結合、セルの塗りつぶし、フォントの色、印刷範囲、名前の設定、罫線、行の高さ変更

結論

完璧に動いたので逆にライブラリのバグ究明が暗礁に乗り上げました。呼び出し元が原因かな……。