Delphi и Excel 2003

Тема в разделе "Delphi - СОМ", создана пользователем sint, 2 май 2010.

  1. sint

    sint Гость

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

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

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

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Например так:
    Код (Delphi):
    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.
     
Загрузка...
Похожие Темы - Delphi Excel 2003
  1. 123456789igor
    Ответов:
    5
    Просмотров:
    3.142
  2. GriffinSC
    Ответов:
    15
    Просмотров:
    7.342
  3. cybert
    Ответов:
    0
    Просмотров:
    99
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    162
  5. antares
    Ответов:
    0
    Просмотров:
    444

Поделиться этой страницей