Как вставить в лист картинку?
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