Delphi и Excel 2003

  • Автор темы sint
  • Дата начала
S

sint

#1
Всем привет!
Такая проблема:
Не могу разобраться, как из Delphi (7) вставить в екселевский документ картинку именно в определенную ячейку и с определенными размерами.

К примеру...
Есть шаблон документа, в нем отмечены области, в которые нужно вставить изображение из файла(файл выбирает пользователь). Причем это изображение должно иметь заданные пользователем размеры и вставляться должно в строго определенное шаблоном место(к примеру область pik1, pic2...)

Помогите плиз!))))
 

sinkopa

Well-known member
17.06.2009
344
4
#2
Например так:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExcelXP, OleServer, jpeg;

type
TForm1 = class(TForm)
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses
ClipBrd,OfficeXP;

procedure TForm1.Button1Click(Sender: TObject);
var
Sels: OleVariant;
begin
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(EmptyParam,0);
ExcelApplication1.ActiveWorkbook.Sheets.Add(EmptyParam,EmptyParam,1,EmptyParam,0);

ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.ActiveSheet as _Worksheet);
ExcelWorksheet1.Range['C6','C6'].Select;
Clipboard.Assign(Image1.Picture);
ExcelWorksheet1.Paste;

with ExcelWorksheet1.Shapes.Item(1) do
begin
// подвинули
IncrementLeft(15.8);
IncrementTop(150.8);
// растянули
ScaleWidth(3.19, msoFalse, msoScaleFromTopLeft);
ScaleHeight(3.18, msoFalse, msoScaleFromTopLeft);
// итд...
//Подробнее смотри в ExcelXP.pas начиная со строчки 22529:
// Shape = dispinterface
//['{00024439-0000-0000-C000-000000000046}']
end;
ExcelApplication1.Visible[0] := true;
ExcelWorksheet1.Disconnect;
ExcelApplication1.Disconnect;
end;

end.