Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi | Взаимодействие с Excel (via TExcelApplication)

Ответить
Настройки темы
Delphi - Delphi | Взаимодействие с Excel (via TExcelApplication)

Аватара для Loki3D

Старожил


Сообщения: 362
Благодарности: 12

Профиль | Отправить PM | Цитировать


Унизительная ПРосьба.
Наишите мне пожалуйста полный, рабочий код выгрузки данных в Excel.
Постенький пример с подробным описанием пожалуйста, Так сказать для Идиотов.
Допустим передать значение из Edit1.text в ячеку листа Excel.
Дальше я сам думаю разобраться...
А то из всех нарытых мною примеров кода у меня ничего неполучилось, даже запустить приложение Excel.
info:
1.Delphi 5
2.Есть компонент TExcelApplication на закладке Servis, правда при его использовании он в Uses прописывается как Excel97 а у меня на компе установлен Ex2000.
3.Установлен он НЕ в дирректорию по-умлчанию, если это имеет значение при вызове приложения?

-------
sory 4 my rus


Отправлено: 12:11, 19-08-2005

 

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
полный, рабочий код выгрузки данных в Excel
Допустим передать значение из Edit1.text в ячеку листа Excel
Код: Выделить весь код
unit < .. >;

interface

uses
  < ... все стандартные ... >, OleServer, Excel97;

type
  TForm1 = class(TForm)
    ExcelApp: TExcelApplication;
    ExcelWB: TExcelWorkbook;
    ExcelWS: TExcelWorksheet;
    Edit1: TEdit;
    < .. >
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    < .. >
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

var lcid: Integer = 0;

procedure TForm1.FormCreate(Sender: TObject);
begin
// Подключаемся
  ExcelApp.ConnectKind := ckRunningOrNew;
  ExcelApp.Connect;
  ExcelApp.Visible[lcid] := True;
  ExcelApp.Workbooks.Add(EmptyParam, lcid);
  ExcelWB.ConnectTo(ExcelApp.ActiveWorkbook);
  ExcelWS.ConnectTo(ExcelWB.Worksheets[1] as _Worksheet);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
// Выкладываем значения в ячейки
  ExcelWS.Cells.Item[1 { = строка }, 1 { = столбец }] := 'Привет!';
  ExcelWS.Cells.Item[2, 5] := 'Ячейка E2';
  ExcelWS.Cells.Item[2, 6] := Edit1.Text;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
// Закрываемся и уходим
  ExcelWS.Disconnect;
  ExcelWB.Close(0 { = не сохранять изменения});
  ExcelApp.UserControl := True;
  ExcelApp.Quit;
end;

end.
Емнип для Excel'я можно использовать любые версии модулей не выше версии самого Excel (т.е., теоретически, программа, написанная с модулем Excel97, будет корректно работать с Excel 97-2003). Во всяком случае, в экселе (в отличие от ворда, например) новые парметры методов интерфейса добавлялись к концу списка (если можно так выразиться ), так что с обратной совместимостью проблем не должно быть. По крайней мере, у меня на десктопе сейчас стоит Excel 2003, а этот код компилировался с модулем Excel97 - и всё работает.

Отправлено: 13:57, 19-08-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Loki3D

Старожил


Сообщения: 362
Благодарности: 12

Профиль | Отправить PM | Цитировать


Большое спасибо Все отработало..
С твоего позволения выложу Код в более привычном виде, для тех, которые учатся писать по учебникам, как я.

Код: Выделить весь код
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Excel97, OleServer;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ExcelApplication1: TExcelApplication;
    ExcelOLEObject1: TExcelOLEObject;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  // подключение
  Form1.ExcelApplication1.ConnectKind := ckRunningOrNew;
  FOrm1.ExcelApplication1.Connect;
  Form1.ExcelApplication1.Visible[1] := True; { здесь и далее должен быть
 параметр lcid назначение которого я не понял,
 но от балды поставил знаечение = 1, чтоб скомпилилось}
  FOrm1.ExcelApplication1.Workbooks.Add (EmptyParam,1); 
  Form1.ExcelWorkbook1.ConnectTo (Form1.ExcelApplication1.ActiveWorkbook );
  Form1.ExcelWorksheet1.ConnectTo (Form1.ExcelWorkbook1.Worksheets [1] as _WorkSheet);

  //выгрузка
  Form1.ExcelWorksheet1.Cells.Item [1,1]:='ПРивет';
  Form1.ExcelWorksheet1.Cells.Item [2,5]:='Ячейка E2';
  FOrm1.ExcelWorksheet1.Cells.Item [2,6]:= Form1.Edit1.Text;



end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // выход
  Form1.ExcelWorksheet1.Disconnect;
  Form1.ExcelWorkbook1.Close (0);
  Form1.ExcelApplication1.UserControl := true;
  Form1.Close;
end;

end.

-------
sory 4 my rus


Отправлено: 17:54, 19-08-2005 | #3


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


lcid - это идентификатор языка, для русского 1049

Отправлено: 21:48, 19-08-2005 | #4


Аватара для Loki3D

Старожил


Сообщения: 362
Благодарности: 12

Профиль | Отправить PM | Цитировать


Еще Раз Спасибо!

-------
sory 4 my rus


Отправлено: 00:03, 20-08-2005 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi | Взаимодействие с Excel (via TExcelApplication)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Взаимодействие видеокарты и процессора ant_y Хочу все знать 3 23-11-2009 19:35
Взаимодействие с главным потоком Boris7779 Программирование в *nix 0 31-08-2009 14:53
[решено] Взаимодействие с MySQL morgan1991 AutoIt 19 22-06-2009 19:29
Delphi - MsOffice | Delphi | Работа с Excel в Делфи AL CAPONE Программирование и базы данных 2 03-10-2006 16:27
Delphi - Как в Delphi узнать, запущен ли Word или Excel Kroc Программирование и базы данных 5 27-10-2004 00:26




 
Переход