Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Вниз

Delphi и Excel   Найти похожие ветки 

 
Link   (2003-01-09 10:27) [0]

Друзья!

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

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


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

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
но не всегда получается!!Писал быстро может где я и ошибся. Вобще об этом инфы много в инете но я по настоящему хорошей не встречал. Экспериментируй.


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

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


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

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


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


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

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


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


> Picco

linkovsk@rambler.ru


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

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


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


> passm

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


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

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


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

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...


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

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


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

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

> passm

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

;))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-62507
MemoryLeak
2003-01-09 17:42
2003.01.20
Рисую....


14-62748
ION T
2003-01-02 15:40
2003.01.20
Текст на


3-62410
viper
2002-12-26 12:32
2003.01.20
Выбор за период


3-62387
MsGuns
2002-12-23 20:37
2003.01.20
Можно ли одним запросом..


4-62923
Uncle Archi
2002-12-03 21:25
2003.01.20
Win API





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский