mengineer's blog

ニッチなネタばかりですが。

C# Excelで貼った画像がリンクになる?

以前書いた下記ネタの訂正です。 mengineer.hatenablog.com

下記Shapes.AddPictureメソッドで画像を貼っていましたが、
これだと画像がリンクとなってしまう場合が有ることが判りました。

shape = workSheet.Shapes.AddPicture("test.bmp", true, true, Left, Top, Width, Height);

リンクになる原因

原因は上記の赤字部分、LinkToFileというパラメータで、ここがtrueだと
貼ったファイルがリンクになるようです。

その右側がSaveWithDocumentというパラメータで、trueだと
貼ったファイルをExcelに含めて保存してくれます、詳細は下記参照。

Shapes. AddPicture メソッド (Excel) | Microsoft Docs

SaveWithDocumentがtrueの時点で、LinkToFileは関係無いのかと思いきや、
リンクになってしまう場合が有ります、場合が有ると言うのは
画像ファイルの保存場所とか、Excelのバージョンとか関係有るみたい。
Excel互換のWPS Officeでは、両方trueでもリンクになりませんでした)

まとめ

画像をExcelに含めて保存したい場合
shape = workSheet.Shapes.AddPicture("test.bmp", false, true, Left, Top, Width, Height);

画像をリンクで貼りたい場合
shape = workSheet.Shapes.AddPicture("test.bmp", true, false, Left, Top, Width, Height);

とするのが正解みたいですね、訂正致します。