// Маленькая процедурка -- на которой я тестировал вообще коннект к Excel procedure TForm1.ButtonClick(Sender: TObject); var Excel : Variant; WorkSheet : Variant; I, J : Integer; begin if OpenDialog.Execute thenbegin 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 dobegin 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 ) thenbegin Excel := CreateOleObject( Reg.ReadString( 'Enema','Excel', 'Excel.Application.8' )); endelsebegin Excel.Workbooks.Close; end; Excel.Visible := False; Excel.Workbooks.Open( FileName ); finally Reg.Free; end; end;
//Пример загрузки списка листов таблицы // Ейный вызов MainForm.LoadLists(Excel.Workbooks[1] ); // -- я предпологаю что открыт 1 файл... procedure TMainForm.LoadLists(WorkBooks: Variant); var I : Integer; begin if not VarIsNull( WorkBooks ) thenbegin ExcelListBox.Items.Clear; // TComboBox for I := 1 to WorkBooks.WorkSheets.Count dobegin 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 dobegin 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.
Информация в примечании 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 = ...
Что такое Named Pipes и как с ними бороться.
В статье обзорно рассмотрены именованные каналы, функции работы с ними и показан демонстрационный пример коммуникации процессов с использованием именованных каналов.
Веб-сервисы. Для профессионалов
Книга содержит описание новой и важной Интернет-технологии, которая активно завоевывает всеобщее признание, несмотря на то, что еще находится в стадии развития. Степень актуальности, достоверности и объективности информации, представленной в книге, очень высокая, поскольку книга написана членом нескольких рабочих групп консорциума W3C, занимающихся выработкой и утверждением новейших стандартов именно в этой области. Материал рассчитан на разработчиков программного обеспечения, связанных с технологиями распределенной обработки информации, и их руководителей.
Автор: Ньюкомер Э.
Хокку дня
О чем пишешь крылышком На стекле, Прилетевшая ласточка?
Афоризмы
Одолжив человеку деньги и отчаявшись получить их обратно, утешься: он мог бы их вернуть в срок и потом попросить еще большую сумму....
Фраза дня
Солнце - это то, что светит, когда нет луны.
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Англии самоубийство расценивается как тяжкое преступление. (К сожалению, нам не удалось выяснить, какое за это предусмотрено наказание - наверное, смертная казнь.)
В городе Томбсоун в штате Аризона (США) мужчинам и женщинам старше 18-ти лет запрещено улыбаться, если у них отсутствует более одного переднего зуба.
И на закуску коротенький анекдот
Лежат двое влюбленных в постели, утомленные первым бурным сексом. Она: - Милый, а ты помнишь, Когда мы с тобой познакомились? Он: - Погоди... ща отдышусь и пойду хистори в аське посмотрю