从字节数组创建 VSTO 形状
Create a VSTO shape from byte array
我有一个以字节数组编码的图像,我想将它作为一个形状添加到 excel 文档中,但不幸的是,我看到的唯一可用的函数需要我保存图像到驱动器,然后读取它。如您所见,这是一个非常慢的操作,我只想从字节流中读取图像并将其解码为位图。
我是这样编码的:
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.QualityLevel = 100;
byte[] bit = null;
using (var ms = new MemoryStream())
{
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(ms);
bit = ms.ToArray();
}
现在,如何将它添加到工作表中?
方法 Shapes.AddPicture 只接受文件名,不能从流中读取。
Excel 对象模型不提供任何读取字节数组然后将其添加为形状的方法。因此,唯一可能的解决方案是将字节数组保存为磁盘上的文件,然后将其添加为您之前所述的形状:
to save the image to the drive and then read it.
我有一个以字节数组编码的图像,我想将它作为一个形状添加到 excel 文档中,但不幸的是,我看到的唯一可用的函数需要我保存图像到驱动器,然后读取它。如您所见,这是一个非常慢的操作,我只想从字节流中读取图像并将其解码为位图。
我是这样编码的:
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.QualityLevel = 100;
byte[] bit = null;
using (var ms = new MemoryStream())
{
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(ms);
bit = ms.ToArray();
}
现在,如何将它添加到工作表中? 方法 Shapes.AddPicture 只接受文件名,不能从流中读取。
Excel 对象模型不提供任何读取字节数组然后将其添加为形状的方法。因此,唯一可能的解决方案是将字节数组保存为磁盘上的文件,然后将其添加为您之前所述的形状:
to save the image to the drive and then read it.