C#を使って、Excelに画像を元のサイズで貼り付けるプログラムを作っていて少しハマりました。
Shapes.AddPicture メソッドを使って、元の画像サイズで貼り付けるとうまくいくようです。
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#でもオブジェクト初期化というのがあるのですが、上記のケースでは適用方法がわかりませんでした。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント