加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:13:40 所属栏目:百科 来源:网络整理
导读:我在内存流中有一个图像,我想将其写入MS Excel文档,PIA只公开采用文件路径的AddPicture方法. 是否可以添加图片而无需将图像写入光盘? MSDN http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.shapes.addpicture(v=office.14).aspx
我在内存流中有一个图像,我想将其写入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希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读