Страница 1 из 1

Как обратиться к ячейке Excel?

Добавлено: 09 июн 2006, 10:06
ElenaA
Помогите, пожалуйста!
У меня есть книга Excel с данными. Мне нужно эти данные скачать с помощью Delphi и рассовать по массивам. Как подключиться к нужной книге, а потом обратиться на определенном листе к определенной ячейке? Заранее благодарна.

Добавлено: 09 июн 2006, 10:29
treider
Создаешь объект автоматизации Exel.Application, а далее в любом справочнике по VBA.
Если не хочешь создовать то в Dilphi 6 есть соответтсвующие компоненты

Добавлено: 09 июн 2006, 11:47
ElenaA
А какие компоненты? С ними-то и проблема... :( (

Добавлено: 09 июн 2006, 12:07
treider
На вкладке Servers есть компонент ExelApplication

Добавлено: 09 июн 2006, 12:12
ElenaA
Да, но на них я не нашла строки подключения к конкретной книге. Или не там искала? Может, там нужно параметры вводить вручную? Справку попробовала перерыть - тоже не нашла, а большой толстой книги у меня нет и в ближайшем времени, к сожалению, не предвидится... Пробую, как крот, в слепую.
HELP!...

Добавлено: 09 июн 2006, 13:46
treider
Компонента EcxelApplication создает экземпляр приложения Exel. Далее вы можете использовать любые функцие которые предоставляет дисп интерфейс Excel примерно так
ExcelApplication.visible =True;
ExcelApplication.Workbooks.open('C:\my.xls');

Для того что бы узнать что предоставляет этот самый дисп можно сделать следующие:
Открыть Excel
нажать Alt+F11
В редакторе VBA набрать Application. нажать ctrl+пробел

В редакторе VBA также имеются средства для просмотра описаний функций для конкретного объекта (сами описания могут храниться в файлах ocx, tlb ...)

Что бы разобраться по глубже нужно почитать литературу по Com+, ActiveX

Иногда возможно использовать функцию записи макроса Ms Office после чего полученый сценарий переделывают для Delphi

Добавлено: 09 июн 2006, 13:53
treider

Код: Выделить всё

		
xl := CreateOleObject('Excel.Application');
xl.Application.EnableEvents := FALSE;
xl.DisplayAlerts := FALSE;
xlWbk := xl.Workbooks.Add;
Range := xlWbk.WorkSheets[1].Range[xlWbk.WorkSheets[1].Cells[1,1], xlWbk.WorkSheets[1].Cells[nRecs, nFields]];
Range.Value := varArray;

Добавлено: 13 июн 2006, 09:28
ElenaA
Спасибо!