Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Чтение данных из конкретных ячеек в EXCEL


Автор: Allbert 27.4.2009, 09:08
Добрый день! Подскажите, пожалуйста, каким образом можно считать данные из конкретных ячеек в EXCELе? Заранее спасибо)

Автор: Allbert 28.4.2009, 08:15
сделал так:
Код

uses ... ComObj, OleServer, ExcelXP;
...
procedure TForm1.ConnectClick(Sender: TObject);

begin
  ExcelApplication1.AutoConnect:=true;
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.OpenXML('C:\ROMT\ROMT_config.xls',EmptyParam));
  ExcelApplication1.ConnectTo(ExcelWorkbook1.Application);
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorksheet);
  ExcelApplication1.Visible[0]:=false;

If BSC_choice.Text= 'BSC2' Then begin ip := ExcelWorksheet1.Range['b2',EmptyParam];
                                port:= ExcelWorksheet1.Range['c2',EmptyParam]; end;
...

IdTelnet1.Host:=ip;
IdTelnet1.port:=port;
ExcelApplication1.Quit;
IDTelnet1.Connect;

end;

procedure TForm1.IdTelnet1Connected(Sender: TObject);
begin
ExcelApplication1.AutoConnect:=true;
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.OpenXML('C:\ROMT\ROMT_config.xls',EmptyParam));
  ExcelApplication1.ConnectTo(ExcelWorkbook1.Application);
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorksheet);
  ExcelApplication1.Visible[0]:=false;

If BSC_choice.Text= 'BSC2' Then begin
dev_BSC:= ExcelWorksheet1.Range['g2',EmptyParam] ;
dev_BS:= ExcelWorksheet1.Range['h2',EmptyParam] ; end;
...
ExcelApplication1.Quit;
end;



В первой процедуре все работает нормально, но когда добавляется тот же набор команд по работе с EXCEL во второй процедуре, но с другими ячейками, выдается ошибка INVALID VARIANT OPERATION. Где ошибка?

Автор: Данкинг 28.4.2009, 10:03
Цитата(Allbert @  28.4.2009,  09:15 Найти цитируемый пост)
INVALID VARIANT OPERATION.

Вероятно, где-то там есть пустая ячейка, значение которой ты хочешь взять.

Автор: Allbert 28.4.2009, 12:17
нет, пустых ячеек там не было. проблема решилась изменением кода обращения к ячейкам с
Код

...ExcelWorksheet1.Range['b2',EmptyParam];

на 
Код

...ExcelWorksheet1.Range['b2',EmptyParam].Value2;

Автор: Allbert 29.4.2009, 08:51
Возник еще один вопрос.. При работе программы мне нужно, чтобы экселевские файлы, неимеющие отношения к программе,  не закрывались и не становились невидимыми. Изменил с 
Код

ExcelApplication1.Quit;

на 
Код

ExcelWorkbook1.Close('C:\ROMT\ROMT_config.xls');

Но другие экселевские документы все равно становятся невидимыми из-за 
Код

ExcelApplication1.Visible[0]:=false;

Но этот код мне нужен для проги.. Другими словами, как сделать, чтобы прога работала только с одним экселевским документом- 'C:\ROMT\ROMT_config.xls'. Посоветуйте, пожалуйста)

Автор: de_Nis 29.4.2009, 14:25
Есть в сети книга:
Корняков Программирование документов и приложений MS Office в Delphi (496 с).
Может быть в ней можно найти ответы на многие вопросы?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)