2016-03-18 11 views
-1

私はExcelに画像を貼り付けるには、このコードを持っている:Excelに貼り付けるときに画像が実際のサイズより大きく表示されるのはなぜですか。また、自然なサイズで表示するにはどうすればよいですか?

. . . 
string unitImageLoc = GetUnitImageLoc(); 
if (unitImageLoc != "image not found") 
{ 
    Image img = Image.FromFile(unitImageLoc); 
    int imgWidth = img.Width; 
    int imgHeight = img.Height; 
    _xlSheet.Shapes.AddPicture(unitImageLoc, 
Microsoft.Office.Core.MsoTriState.msoFalse, 
Microsoft.Office.Core.MsoTriState.msoCTrue, 4, 4, imgWidth, imgHeight); 
} 

private string GetUnitImageLoc() 
{ 
    string unitUpper = _unit.ToUpper(); 
    string candidateFile = string.Format("C:\\RoboReporter\\{0}.png", 
unitUpper); 
    if (File.Exists(candidateFile)) 
    { 
     return candidateFile; 
    } 
    return "image not found"; 
} 

それは動作しますが、ここに見られるように画像ビューアに表示されて、上にエクセル(、実際のサイズよりも大きな画像を印刷下):

enter image description here

それは特定のイメージとの問題ではありません:それはどんなで起こる:

enter image description here

したがって、幅と高さを70%または何倍にして同じにする必要がありますか?

+1

[here](https://msdn.microsoft.com/en-us/library/office/ff198302.aspx)のように、幅と高さの両方に「-1」を入力してみてください。 – Quantic

+2

画像をコピーして貼り付けるとどうなりますか?前述のように(http://superuser.com/questions/211020/prevent-outlook-2010-insert-picture-resizing-image)Excelは物理的なサイズに基づいて画像を表示するので、画像のDPI設定を使用して拡大縮小しますそれ;画像のDPIがWindowsの設定と同じ場合にのみ、1つの画像ピクセルを1つの画面ピクセルにマッピングするだけではありません。イメージをImageクラスに読み込んで、VerticalプロパティとHorizo​​ntalResolutionプロパティを変更し、それを一時ファイルに保存して、その一時ファイルをスプレッドシートに追加する必要があります。 – Quantic

+0

イメージのdpiを非常に簡単に設定できます! – TaW

答えて

1

widthの場合は-1、上記のhereの場合はheightと入力してください。

関連する問題