You can use ClosedXML component which is FREE.
Install ClosedXML from NuGet, and import it to project.
AddPicture in ClosedXML can get file as IO.Stream.
So simply open image in memory and give it to AddPicture.
Please attention to bellow code:
Using ClosedXML.Excel;
System.IO.MemoryStream ImageStream = new System.IO.MemoryStream();
System.Drawing.Bitmap img = My.Resources.MyResourceImageFile;
img.Save(ImageStream, System.Drawing.Imaging.ImageFormat.Png);
ImageStream.Position = 0;
XLWorkbook workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("MySheet");
var picture = worksheet.AddPicture(ImageStream).MoveTo(worksheet.Cell("B3")).Scale(0.5);
Imports ClosedXML.Excel
Dim ImageStream As New IO.MemoryStream
Dim img As System.Drawing.Bitmap = My.Resources.MyResourceImageFile
img.Save(ImageStream, System.Drawing.Imaging.ImageFormat.Png)
ImageStream.Position = 0
Dim workbook As New XLWorkbook()
Dim worksheet = workbook.Worksheets.Add("MySheet")
Dim picture = worksheet.AddPicture(ImageStream).MoveTo(worksheet.Cell("B3")).Scale(0.5)