Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi и Excel [D7]


Link ©   (2003-01-09 10:27:00) 

Друзья!

Мне нужно сделать программку для фирмы. Я слышал, что в Delphi можно сделать приложение, обрабатывающее данные в таблице Excel. Нужно, чтобы через приложение можно было рассматривать каждую запись отдельно, редактировать её содержание, при этом в таблице производился перерасчёт. Слышал, что это делается с помощью OLE или COM, но никогда с этим не сталкивался.

Подскажите, пожалуйста, как это можно реализовать.


Link   (2003-01-09 12:33:00) [1]

Picco , спасибо за примеры.

> passm

Спасибо, буду пробовать

;))


passm   (2003-01-09 12:24:00) [2]

Но это работа через переменную типа вариант.
Есть еще один метод, который работает быстрее - работа с интерфейсами непосредственно. После импорта библиотеки типов создаешь переменную типа импортированного интерфейса... Это лучше пробовать на практике :)


passm   (2003-01-09 12:19:00) [3]

Link (09.01.03 11:59)> Это достаточно объемно...
Вот пример:
procedure TForm1.AnyEvent(Sender: TObject);
begin
XL:= CreateOLEObject("Excel.Application");
XL.Visible:= True;
XL.WorkBooks.Add(xlWBatWorkSheet);
XL.WorkBooks[1].WorkSheets[1].Name:= "From Delhi";
Self.DataToExcel
end;

procedure TForm1.DataToExcel;
var
i: Integer;
Sheet: Variant;
begin
Sheet:= XL.WorkBooks[1].WorkSheets[1];
for i:= 1 to 5 do
Sheet.Cells[i, 1]:= i;
Sheet.Cells[i, 1]:= "Sum(A1:A5)"
end;

Для импорта констант (xlWBatWorkSheet в частности) воспользуйся:
Import Type Library и найди Microsoft Excel...


Groove   (2003-01-09 12:06:00) [4]

2Picco
Groove_SQL@rambler.ru
и мне, плиз...


Link   (2003-01-09 11:59:00) [5]


> passm

Не сомневаюсь, что ты об этом что-то знаешь. Будь другом, поделись.


passm   (2003-01-09 11:57:00) [6]

Link (09.01.03 11:31)> Возможно.


Link   (2003-01-09 11:41:00) [7]


> Picco

linkovsk@rambler.ru


Link   (2003-01-09 11:31:00) [8]


> Спрашивающий

Спасибо за информацию. Но я имел ввиду, что в приложении должны быть Edit или что-нибудь в этом роде, в которых отображалась бы какая-либо ячейка. И вот, редактируя в них информацию, данные бы менялись в таблице. То есть, нужно связать Edit и ячейку в таблице. Это возможно?


Picco   (2003-01-09 11:10:00) [9]

Дай мыло куда прислать, у меня есть пару хороших книжных примеров


passm   (2003-01-09 10:52:00) [10]

Link (09.01.03 10:27)> Так сразу все не напишешь...
Почитай Чарльз Калверт. Базы данных в Delphi 4. Руководство разработчика.
Описываются основы COM/DCOM и есть раздел посвященный автоматизации Word & Excel.


Спрашивающий   (2003-01-09 10:44:00) [11]

uses ComObj

Пример:

-----------------------
var
Excel: Variant;
I,J : Integer;//строка/столбец

begin
try

Excel := CreateOleObject("Excel.Application");
except
MessageDlg("Невозможно запустить Microsoft Excel.", mtError, [mbOK], 0);
Exit;
end;

Excel.WorkBooks.Add;//добавление книги
Excel.WorkBooks[1].WorkSheets[1].Cells[I,J].Select;//выделить ячейку
Excel.WorkBooks[1].ActiveSheet.Paste;//вставить данные в ячейку

Excel.WorkBooks[1].WorkSheets[1].Columns.AutoFit;//выравнить по ширине данных
Excel.WorkBooks[1].WorkSheets[1].Columns.HorizontalAlignment:=2;//по моему выравнить по левому краю

Excel.Application.Visible:=True;//показываем Excel

и так далее ориентируйся как это делают макросы в самом Excel
но не всегда получается!!Писал быстро может где я и ошибся. Вобще об этом инфы много в инете но я по настоящему хорошей не встречал. Экспериментируй.


Наверх

Титульная страница Поиск, карта сайта Написать письмо