How to insert an image (of type Image) into a specific cell in an Excel worksheet
taperSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item("Taper"); Microsoft.Office.Interop.Excel.Range cell = GetMyPictureCELL(taperSheet); Image myImage = new Image(); RenderTargetBitmap bmp; bmp = new RenderTargetBitmap((int)this.Width, (int)this.Height, 96, 96, PixelFormats.Pbgra32); bmp.Render(myViewPort); myImage.Source = bmp; myImage.Stretch = Stretch.Uniform;
and now? I was hoping for
cell.Add(myImage)
But I guess this is not so simple.
/ Stefan
Thanks for your input doitgood
The following code works for me
In my case, my image source is a viewport (myViewPort) The placement of the image is determined by the cell
try { Image myImage = new Image(); RenderTargetBitmap bmp; PngBitmapEncoder encoder; string fileName; System.IO.Stream stream; object missing = System.Reflection.Missing.Value; Microsoft.Office.Interop.Excel.Picture pic = null; Microsoft.Office.Interop.Excel.Pictures p = null; bmp = new RenderTargetBitmap((int)this.Width, (int)this.Height, 96, 96, PixelFormats.Pbgra32); bmp.Render(myViewPort); myImage.Source = bmp; myImage.Stretch = Stretch.Uniform; fileName = System.IO.Path.GetTempFileName(); stream = System.IO.File.OpenWrite(fileName); encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bmp)); encoder.Save(stream); stream.Close(); p = taperSheet.Pictures(missing) as Microsoft.Office.Interop.Excel.Pictures; pic = p.Insert(fileName, missing); pic.Left = cell.Left; pic.Top = cell.Top; } catch { }
source share