Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 07.05.04 09:05

Лучшее из нашего FAQ   |x|
Пример работы через OLE с Exel
Пример от Зимина Александра

// Маленькая процедурка -- на которой я тестировал вообще коннект к Excel
procedure TForm1.ButtonClick(Sender: TObject);
var
 Excel : Variant;
 WorkSheet : Variant;
 I, J  : Integer;
begin
 if OpenDialog.Execute then begin
   Excel := CreateOleObject( InputBox('OleStr', 'CreateOleObject',
   'Excel.Application.8') );
   Excel.Visible := False;
   Excel.Workbooks.Open( OpenDialog.FileName );
   WorkSheet := Excel.Workbooks[1].WorkSheets[1];
   ListView.Columns.Clear;
   ListView.Items.Clear;
   for I := 1 to WorkSheet.Cells.CurrentRegion.Columns.Count do
      ListView.Columns.Add.Caption := VarToStr( WorkSheet.Cells[1,I] );
   for I := 1 to WorkSheet.Cells.CurrentRegion.Rows.Count do
    with ListView.Items.Add do begin
     Caption := VarToStr( WorkSheet.Cells[I,1] );
     for J := 2 to WorkSheet.Cells.CurrentRegion.Columns.Count do
       SubItems.Add( VarToStr( WorkSheet.Cells[I,J] ));
   end;
   Excel.Workbooks.Close;
   Excel.Quit;
 end;
end;

{
Кусочки из программы, которая читала Excel и кидала дату в SQL базу,
Прога была одаптирована к конторской конкретике, поэтому целиком её
кидать бессмысленно.
}

//Коннект... С простой мыслей о том что неизвесто с какой именно
// версией объекта придется работать
procedure TEnemaDM.ConnectToExcelServer(FileName: String);
var< /b>
 Reg : TRegIniFile;
begin
!  R eg := TRegIniFile.Create( 'SOFTWARE\');
 if (FileExists( FileName ))and
    (UpperCase(ExtractFileExt( FileName )) = '.XLS' ) then try
   if VarIsEmpty( Excel ) then begin
     Excel := CreateOleObject( Reg.ReadString( 'Enema','Excel',
      'Excel.Application.8' ));
   end else begin
     Excel.Workbooks.Close;
   end;
   Excel.Visible := False;
   Excel.Workbooks.Open( FileName );
 finally
   Reg.Free;
 end;
end;

procedure TEnemaDM.DisconnectExcelServer;
begin
 try
   try
     Excel.Quit;
   except
   end;
 finally
   VarClear( Excel );< br>  end;
end;


//Пример загрузки списка листов таблицы
// Ейный вызов MainForm.LoadLists(Excel.Workbooks[1] );
//  -- я предпологаю что открыт 1 файл...
procedure TMainForm.LoadLists(WorkBooks: Variant);
var
 I : Integer;
begin
 if not VarIsNull( WorkBooks ) then begin
   ExcelListBox.Items.Clear; // TComboBox
   for I := 1 to WorkBooks.WorkSheets.Count do begin
     ExcelListBox.Items.Add( VarToStr( WorkBooks.WorkSheets[I].Name ));
   end;
 end;
end;


// Сама процедура загрузки перекачивает данные в некую хранимую процедуру
// Вызывалась как LoadExcel( Excel.Workbooks[1].WorkSheets[MainForm.CurrentList] )
procedure TEnemaDM.LoadExcel( WorkShe! et : Var iant );
var
 I : Integer;
 ErrorList : TStrings;
begin
 with MainForm do try
   ErrorList := TStringList.Create;
   try
     for I := 1 to WorkSheet.Cells.CurrentRegion.Rows.Count do begin
       try
        ХранимаяПроцедура.ParamByName( параметр ).AsString :=
            VarToStr(
          WorkSheet.Range[наименование региона в символах Excel. см Help].Cells[I,1] );
        ХранимаяПроцедура.ExecProc;
       except
         on E : Exception do ErrorList.Add( GetErrorCurrentValue +
                         #32 + E.Message );
       end;
  &nb sp;  end;
     if ErrorList.Count = 0 then
        MessageDlg( 'Данные успешно успешно загружены' ,
    mtInformation, [mbOk], 0 )
     else
       ФормочкаДляОшибок.SetErrorList( ErrorList );
   finally
     ErrorList.Free;
   end;
 except
   on E : Exception do MessageDlg( E.Message, mtError, [mbOk], 0 );
 end;
end;


Коментарий от Yur Ovchinnikov (yur@sammit.kiev.ua)

 cls_ExcelObject := 'Excel.Application';
 regData := TRegistry.Create;
 regData.RootKey := HKEY_CLASSES_ROOT;
 try
   if regData.OpenKey('\Excel.Application\CurVer', False) then
    begin
     cls_ExcelObject := regData.Rea dString('')
     regData.CloseKey;
&n! bsp; &nb sp; end
 finally
   regData.Free;
 end;

Это для того, чтобы не применять локальные для каждой версии названия "Excel.Application.8", "Excel.Application.9".
Ко всему прочему приведенный пример не работает с Excel95.

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Информация в примечании Excel
    excel,workbook:variant; begin excel:=CreateOleObject('Excel.Application'); Workbook := Excel.WorkBooks.Add('f:\info.xls'...
  • Скрытие столбцов в DBGrid
    Доброе утро, мастера и не только! Я столкнулся с такой проблемой. При выполнении SQL-запроса в ДБГрид выводятся ...
  • Замена текста в Word XP
    Подскажите как в Word XP найти и заменить необходимое слово. Я пробовал двигаться по символьно, но это очень долго ...
  • обновление DataSet'а не работает...
    Добрый день. имеем такой код: Ds := TADODataSet.Create(nil); DS.CommandText := 'Select * from table'; DS.CursorType = ...
  • Как Baloon-подсказку сделать поверх всех окон?
    Дело в том что у меня есть форма которая находится поверх всех окон, и при попытке показать балун с подсказкой из трея, ...
  • Инет и delphi
    Надо сделать прогу, чтобы она посылал методом post данные на сервер и получала страницу результата. Причем желательно ...
  • Как узнать права юзера?
    Здравствуйте! Подскажите, плз, где можно почитать о том, как узнать права юзера в WinXP. Ну или здесь напишите. А то ...
У нас большой выбор статей   |x|
Что такое Named Pipes и как с ними бороться.
В статье обзорно рассмотрены  именованные каналы, функции работы с ними и показан демонстрационный пример коммуникации процессов с использованием именованных каналов.
Новинки книжного рынка   |x|
Веб-сервисы. Для профессионалов
Книга содержит описание новой и важной Интернет-технологии, которая активно завоевывает всеобщее признание, несмотря на то, что еще находится в стадии развития. Степень актуальности, достоверности и объективности информации, представленной в книге, очень высокая, поскольку книга написана членом нескольких рабочих групп консорциума W3C, занимающихся выработкой и утверждением новейших стандартов именно в этой области. Материал рассчитан на разработчиков программного обеспечения, связанных с технологиями распределенной обработки информации, и их руководителей.
Автор: Ньюкомер Э.
Другие сайты о DELPHI   |x|
games on delphi
Заходи на этот сайт и узнай, как делать игры на Delphi.

» Оценка сайта: 2
Опрос населения :)
Новый журнал для программистов "RSDN Magazine". Ваше мнение, нужен ли он вообще?
»»» Да
»»» Нет
Для души

Хокку дня
О чем пишешь крылышком
На стекле,
Прилетевшая ласточка?

Афоризмы
Одолжив человеку деньги и отчаявшись получить их обратно, утешься: он мог бы их вернуть в срок и потом попросить еще большую сумму....

Фраза дня
Солнце - это то, что светит, когда нет луны.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Англии самоубийство расценивается как тяжкое преступление. (К сожалению, нам не удалось выяснить, какое за это предусмотрено наказание - наверное, смертная казнь.)
В городе Томбсоун в штате Аризона (США) мужчинам и женщинам старше 18-ти лет запрещено улыбаться, если у них отсутствует более одного переднего зуба.

И на закуску коротенький анекдот
Лежат двое влюбленных в постели, утомленные первым бурным сексом.
Она:
- Милый, а ты помнишь, Когда мы с тобой познакомились?
Он:
- Погоди... ща отдышусь и пойду хистори в аське посмотрю

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=512345


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное