Excel ЧаВо


Как вставить в лист картинку?


var

AShape: Excel_TLB.Shape; APic: Picture; // Excel_TLB

Img: TImage; // ExtCtrls

MyFormat: Word; // для копирования картинки в БО

AData: THandle; // для копирования картинки в БО

APalette: HPALETTE; // для копирования картинки в БО

... // Первый метод

// Вставляем картинку из файла с "нулевым" размером в

// позицию ячейки B2. "Нулевой" размер потому, что

// мы не знаем заранее размера картинки

with ASheet.Range['B2', EmptyParam] do

AShape := ASheet.Shapes.AddPicture(ExpandFileName('common.gif'), msoFalse, msoTrue, Left, Top, 0, 0); // После вставки получаем ссылку на объект Shape, содержащий

// нашу картинку. "Реанимируем" оригинальный размер картинки

AShape.ScaleHeight(1, msoTrue, EmptyParam); AShape.ScaleWidth(1, msoTrue, EmptyParam); AShape.Name := 'Picture1';

// Второй метод - вставляем в выделенную ячейку

ASheet.Range['C7', EmptyParam].Select;

APic := (ASheet.Pictures(EmptyParam, lcid) as Pictures).Insert(ExpandFileName('common.gif'), EmptyParam); APic.Name := 'Picture2';

// Третий метод - вставка через буфер обмена

// Загрузим картинку с диска в TImage

Img.Picture.LoadFromFile(ExpandFileName('common.bmp')); MyFormat := CF_PICTURE; AData := Img.Picture.Bitmap.Handle; APalette := Img.Picture.Bitmap.Palette; // и помещаем в буфер обмена

Img.Picture.SaveToClipboardFormat(MyFormat, AData, APalette); Clipboard.SetAsHandle(MyFormat, AData); // из буфера обмена вставим в ячейку D12



ASheet.Paste(ASheet.Range['D12', EmptyParam], EmptyParam, lcid);

Все добавленные картинки будут включены в коллекцию Shapes листа.

AddPicture Method

Worksheet.Pictures Method

Paste Method



Содержание раздела