Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 21:55   #1
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
Вопрос Delphi 7 и Excel

Подскажите, как получить данные из таблицы Ecxel в Delphi 7? В книге написано, что необходимые компоненты располагаются на вкладке Services, но у меня почему-то нет этой вкладки.
Mutagena вне форума Ответить с цитированием
Старый 12.11.2009, 22:50   #2
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

Стрелками вкладки до конца пролистай, может не заметила. Если нет то установи пакет:
1. меню"КОМПОНЕНТ"-из списка выбираешь "Установить компонент"-в появившемся окне пролистываешь, ищешь строчку типа "Microsoft Office XP...", ставишь галочку, нажимаешь ОК.
2. если в списке не оказалось "Microsoft Office XP...", нажми кнопку ДОБАВИТЬ, затем зайди по пути (это по умолчанию он такой, измениятся от того куда установлен Делфи):"C:\Program Files\Borland\Delphi7\Bin" , выбери файл "dclofficexp70.bpl" , потом ОК, еще раз ОК.
вкладка должна появиться в конце.
А вообще компонент не обязателен, позже найду процедуру по работе с Ecxel напишу
ИринаForeve вне форума Ответить с цитированием
Старый 12.11.2009, 22:50   #3
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

Пример 1.
Код:
var
    ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant;
    BeginCol, BeginRow, i, j : integer;
    RowCount, ColCount : integer;
begin
  // Координаты левого верхнего угла области, в которую выводят данные
  BeginCol := 1;
  BeginRow := 5;
  // Размеры выводимого массива данных
  RowCount := 100;
  ColCount := 50;
  // Создание Excel
  ExcelApp := CreateOleObject('Excel.Application');
// Отключаем реакцию Excel на события, чтобы ускорить вывод информации
  ExcelApp.Application.EnableEvents := false;
  //  Создаем Книгу (Workbook)
  // Если заполняем шаблон, то 
  // Workbook := ExcelApp.WorkBooks.Add('C:\MyTemplate.xls');
  Workbook := ExcelApp.WorkBooks.Add;
  // Создаем Вариантный Массив,который заполним выходными данными
  ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
  // Заполняем массив
  for I := 1 to RowCount do
    for J := 1 to ColCount do
      ArrayData[I, J] := J * 10 + I;
  // Левая верхняя ячейка области, в которую будем выводить данные
  Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
  // Правая нижняя ячейка области, в которую будем выводить данные
  Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow  + RowCount - 1, 
           BeginCol + ColCount - 1];
  // Область, в которую будем выводить данные
  Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
  // А вот и сам вывод данных Намного быстрее поячеечного присвоения
  Range.Value := ArrayData;
  // Делаем Excel видимым
  ExcelApp.Visible := true;
Пример 2. (процедура по импорту данных из екселя)
Код:
procedure TBdan.N15Click(Sender: TObject);
var XML: variant;//приложение Excel
   i,index:integer;
begin
  OpenDialog1.DefaultExt := '.xls';   // пользователь выбирает файл для импорта данных
  OpenDialog1.Filter := 'Excel (*.xls)|*.xls';
  if OpenDialog1.Execute then
  begin
  XML:=CreateOLEObject('Excel.Application');
  XML.Visible:=False;
  XML.Workbooks.Open(OpenDialog1.FileName);
  i:=XML.ActiveSheet.UsedRange.Rows.Count; //количество строк в таблице
for index:=2 to i do
 begin
   Dm.ShP.insert;
   Dm.ShP.Fields[0].Value:=XML.Sheets[1].cells[index,1].Text;
   Dm.ShP.Fields[1].value:=XML.Sheets[1].cells[index,2].Text;
   Dm.ShP.Fields[2].Value:=XML.Sheets[1].cells[index,3].Text;
   Dm.ShP.Fields[3].Value:=XML.Sheets[1].cells[index,4].Text;
   Dm.ShP.Fields[4].Value:=XML.Sheets[1].cells[index,5].Text;
   Dm.ShP.Post;
 end;
  XML.Application.Quit;
  end;
еще в модули нужно добавить ComObj

Последний раз редактировалось ИринаForeve; 12.11.2009 в 23:24.
ИринаForeve вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi ->Excel->График по таблице->Delphi Avalonix БД в Delphi 2 30.10.2008 14:04
Delphi и Excel antoni БД в Delphi 3 05.08.2008 11:19
Excel + Delphi fudzy79 Помощь студентам 3 10.03.2008 19:35
Delphi+Excel Ирисска БД в Delphi 5 18.11.2007 13:14
Delphi+Excel Suall БД в Delphi 0 30.04.2007 07:37