2015-01-07 3 views
-1

У меня есть изображение, которое закодировано в массиве байтов, и я хотел бы добавить его как форму в документе excel, но, к сожалению, единственная доступная функция, которую я вижу для этого, требует от меня сохранения изображение на диск, а затем прочитайте его. Как вы видите, это очень медленная операция, и я хотел бы просто прочитать изображение из потока байтов и декодировать его в растровое изображение.Создайте форму VSTO из массива байтов

Я закодирован так:

    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 принимает только имя файла и не может читать из потока.

+0

Вы должны сохранить его на диске, а затем загрузить его оттуда, другой вариант не доступен. –

+0

Если вы не хотите сохранять его на диске, вы можете использовать объект clipboard для вставки изображения в Excel –

+0

Это хорошая идея, но как я могу получить ручку изображения, которое я вставил? @Sarvesh – Hristo

ответ

1

Объектная модель Excel не предоставляет никакого способа чтения массива байтов, а затем добавляет его как форму. Таким образом, единственное возможное решение состоит в том, чтобы сохранить массив байтов в виде файла на диске, а затем добавить его как форму, как вы заявили ранее:

, чтобы сохранить изображение на диске, а затем прочитать его.

+0

Это просто ужасно. Абсолютно ужасно. – Hristo

Смежные вопросы