Shapes.AddPicture メソッドを使って、元の画像サイズで貼り付ける

シェアする

  • このエントリーをはてなブックマークに追加

C#を使って、Excelに画像を元のサイズで貼り付けるプログラムを作っていて少しハマりました。

スポンサードリンク

Shapes.AddPicture メソッド

Jpegなどの画像をExcelに貼り付けるには、Microsoft.Office.Interop.Excelの中にある以下のメソッドを使います。

Shape AddPicture(
[In] string Filename,
[In] MsoTriState LinkToFile,
[In] MsoTriState SaveWithDocument,
[In] float Left,
[In] float Top,
[In] float Width,
[In] float Height
);

WidthとHeightを引数に持つので、画像のサイズを取得してから、このメソッドを呼び出そうとしたのですが、ちょっとめんどくさそうです。

もし、私がこのメソッドを実装するなら、WidthとHeightを-1に指定したら、元の画像のWidthとHeightで表示するように実装するんだけどなぁ、なんて考えながらいろいろと試してみました。

スポンサードリンク

Shape.ScaleHeightとShape.ScaleWidthを使って元の画像サイズにする

試行錯誤した結果、以下のようにすると元の画像サイズで表示できました。

Range range1 = srcSheetTemplate.Cells(1, 1);
double Left = range1.Left;
double Top = range1.Top;
double Width = 0.0;
double Height = 0.0;
Shape shp = srcSheetTemplate.Shapes.AddPicture(“aaa.jpg”, MsoTriState.msoFalse, MsoTriState.msoTrue, Left, Top, Width, Height);
shp.ScaleHeight(1.0, MsoTriState.msoTrue);
shp.ScaleWidth(1.0, MsoTriState.msoTrue);

VBAならWithステートメントが使えると思います。

C#でもオブジェクト初期化というのがあるのですが、上記のケースでは適用方法がわかりませんでした。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です