c# – 将内存流中的图像添加到Excel文档中

前端之家收集整理的这篇文章主要介绍了c# – 将内存流中的图像添加到Excel文档中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在内存流中有一个图像,我想将其写入MS Excel文档,PIA只公开采用文件路径的AddPicture方法.

是否可以添加图片而无需将图像写入光盘?

MSDN

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.shapes.addpicture(v=office.14).aspx

解决方法

好吧,有点盲目飞行,但假设你的代码有一两件事(例如你的源代码,数据类型等),这可能是一个解决方案:
首先,您需要从流中创建位图图像数据(我假设它是一个字节流,也假设流描述了位图图像). Stack Overflow上已有解决方案: 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,bitmap.Width,bitmap.Height),ImageLockMode.ReadWrite,bitmap.PixelFormat); IntPtr pNative = bmData.Scan0; Marshal.Copy(imageData,pNative,whch); bitmap.UnlockBits(bmData);

假设您有一个工作簿的对象和您即将使用的工作表,如下所示:

xlBook = (Excel.Workbook)objExcel.Workbooks.Add("");
xlSheet = (Excel.Worksheet)xlBook.Worksheets07001;
xlSheet.Activate();

既然你有一个Bitmap类型的变量和一个工作表,你只需要将图像粘贴到工作表上:

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”):Worksheet.Paste Method希望这可以帮助!

原文链接:https://www.f2er.com/csharp/100473.html

猜你在找的C#相关文章