Выгрузка TImage в Excel

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
hron66
незнакомец
Сообщения: 5
Зарегистрирован: 01.11.2019 13:44:52

Выгрузка TImage в Excel

Сообщение hron66 »

Доброго времени суток!
На форме есть TImage с изображением. Пытаюсь вставить в Excel: копирую изображение из TImage в буфер обмена. Затем вставляю в Excel с помощью команды PasteSpecial. В итоге на PasteSpecial все время возникает исключение EOleException с текстом:
Метод PasteSpecial из класса Worksheet завершен неверно.

Код: Выделить всё

procedure TfmMain.TestBtnClick(Sender: TObject);
var Img: TImage;   
    xla: Variant;
    xls: Variant;
begin
  Img:=TImage.Create(nil);

  xla := CreateOleObject('Excel.Application');
  xla.Workbooks.Add;
  xls := xla.Workbooks[1].WorkSheets[1];
  xls.Name := 'Sheet1';
  xla.Visible:=True;

  Clipboard.Assign(Img.Picture);
   
  xla.Cells(5,5).Select;
  xls.PasteSpecial(5,False,False,False,0,EmptyParam,EmptyParam); 

  Img.Free;
end;


Я думаю, что все дело в том, что неправильно передаются параметры в PasteSpecial. Если у кого-нибудь есть рабочий вариант, поделитесь пожалуйста. Заранее благодарен.
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

Попробуй Clipboard.Assign(Img.Picture.Bitmap)
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

1. В коде не видно, что бы вы что-либо вставляли в Img
2. Почему формат 5?
Вот тут https://docs.microsoft.com/ru-ru/office ... stespecial
написано, что это формат "Графический объект Microsoft Office" т.е. видимо это векторный графический примитив. А у вас Img: TImage;
Попробуйте форматы 0 или 1
hron66
незнакомец
Сообщения: 5
Зарегистрирован: 01.11.2019 13:44:52

Сообщение hron66 »

1) Да, это просто один из вариантов кода. Я пробовал загружать изображение прямо на форму и в runtime. Изображение в Img точно есть.
2) Пробовал все форматы от 1 до 5. Ни с каким не работает.
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

А мое предложение попробовали? Потому что с вашим кодом у меня вообще в клипборд не попадает
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

hron66 писал(а):2) Пробовал все форматы от 1 до 5. Ни с каким не работает.

Для чистоты эксперимента спрошу.
0 - PNG пробовали?
hron66
незнакомец
Сообщения: 5
Зарегистрирован: 01.11.2019 13:44:52

Сообщение hron66 »

Пробовал BMP, JPG, PNG. Результат тот же.
Аватара пользователя
DYUMON
постоялец
Сообщения: 234
Зарегистрирован: 11.03.2009 12:32:54
Контактная информация:

Сообщение DYUMON »

может быть как то так надо ?

Код: Выделить всё

 xla.Cells(5,5).Select;
  xls.ActiveSheet.Range.PasteSpecial(5,False,False,False,0,EmptyParam,EmptyParam);
Ответить