好吧,有点盲目飞行,但假设您的代码有一两件事(例如流的来源、数据类型等),这可能是一个解决方案:
首先,您需要从流(我假设是字节流,也假设流描述位图图像)创建位图图像数据。 Stack Overflow 上已经有一个解决方案:字节数组到位图图像 https://stackoverflow.com/questions/11730373/byte-array-to-bitmap-image
我从解决方案中复制粘贴代码:
int w= 100;
int h = 200;
int ch = 3; //number of channels (ie. assuming 24 bit RGB in this case)
byte[] imageData = new byte[whch]; //you image data here
Bitmap bitmap = new Bitmap(w,h,PixelFormat.Format24bppRgb);
BitmapData bmData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
IntPtr pNative = bmData.Scan0;
Marshal.Copy(imageData,0,pNative,whch);
bitmap.UnlockBits(bmData);
另外假设您有一个用于工作簿和要使用的工作表的对象,如下所示:
xlBook = (Excel.Workbook)objExcel.Workbooks.Add("");
xlSheet = (Excel.Worksheet)xlBook.Worksheets1 http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.paste%28v=vs.80%29.aspx;
xlSheet.Activate();
现在您已经有了一个位图类型变量和一个工作表,您所需要做的就是将图像粘贴到工作表中:
System.Windows.Forms.Clipboard.SetDataObject(bitmap, false);
xlsRange = xlSheet.get_Range((Excel.Range)xlSheet.Cells[5, 15], (Excel.Range)xlSheet.Cells[5, 15]);
xlSheet.Paste(xlsRange, bitmap);
所以关键是这个人(而不是使用“AddPicture”):
工作表.粘贴方法 http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.paste%28v=vs.80%29.aspx
希望这可以帮助!