На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Как работать с Excel в Дельфи
      Чтобы работать с Excel из Delphi cуществует два основных пути. Первый - это создание его как COM объект. Таким же образом можно работать и с Word, Access, Outlook(не Express) и многими другими программами.

      Исходный код:


      ExpandedWrap disabled
        var
         Excel, WorkBook, Sheet: Variant;
        begin
         Excel := CreateOleObject('Excel.Application');
         Excel.WorkBooks.Open(FileName,False);
         WorkBook := Excel.WorkBooks.Item[1];
         Sheet := Workbook.Sheets.Item[3];
         Sheet.Cells[1,2]:='ASDFG';
         Sheet.Cells[2,2]:=230;







      Все объекты и методы Офиса можно посмотреть в help'е Офиса.
      Второй способ (для таблицы Excle) это подключение через DAO(Data Active Objects) или ODBC.

      Автор ответа: Fantasist


      Чтобы использовать только стандартные компоненты давайте попробуем работать с Excel через ADO. Это не самый быстрый и далеко не первый по возможностям метод (DAO работает на порядок быстрее и предоставляет куда больше возможностей), но ADO компоненты входят в стандартную поставку 5 и 6 Дельфи. Итак заходим в Панель управления Windows, идем в свойства ODBC, делаем DSN используя Excel драйвер, не забываем указать в свойствах на файл Excel. Закрываем ODBC, открываем Дельфи. Ставим на форму ADOConnection. Идем в ConnectionString - строим строку подключения - надо выбрать только ODBC провайдер и на следующей вкладке указать сделанный DSN, остальные опции в большинстве случаев можно оставить как есть. Строка получена. Кстати ее можно вообще упростить до вида: "DSN=MyDsn". Теперь вам доступны листы файла как таблицы а весь файл как база данных. Подключаем ADOQuery к ADOConnection. Cоздаем таблицу, т.е. новый лист - путем запуска следующей квери:

      SQL:

      ExpandedWrap disabled
        Create Table MyTable1 (
         Field1 varchar(20),
         Field2 varchar(10)  )





      Снова переходим в дизайн - ставим на форму ADOTable, указываем как Connection наш компонент с ADOConnection, теперь если кликнуть на свойстве TableName - вы сможете увидеть в списке сделанную нами таблицу "MyTable1". Соедините таблицу с DBGrid - убедитесь что работа с таблицей в Excel мало отличается от работы с другими базами данных.

      Взято с http://forum.vingrad.ru

      ExpandedWrap disabled
        function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
        const
          xlCellTypeLastCell = $0000000B;
        var
          XLApp, Sheet: OLEVariant;
          RangeMatrix: Variant;
          x, y, k, r: Integer;
        begin
          Screen.Cursor:=crAppStart;
          Result := False;
          XLApp := CreateOleObject('Excel.Application');
          try
            XLApp.Visible := False;
            XLApp.Workbooks.Open(AXLSFile);
            Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
            Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
            x := XLApp.ActiveCell.Row;
            y := XLApp.ActiveCell.Column;
            AGrid.RowCount := x;
            AGrid.ColCount := y;  
            RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
            k := 1;
            repeat
              for r := 1 to y do
               AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
              Inc(k, 1);
              AGrid.RowCount := k + 1;  
            until k > x;  
            RangeMatrix := Unassigned;
          finally
            if not VarIsEmpty(XLApp) then
            begin  
              XLApp.Quit;  
              XLAPP := Unassigned;  
              Sheet := Unassigned;  
              Result := True;  
            end;  
          end;
          Screen.Cursor:=crDefault;
        end;


      Автор ответа: Kostas
      Сообщение отредактировано: Rouse_ -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0215 ]   [ 17 queries used ]   [ Generated: 28.03.24, 19:06 GMT ]