Программы   Загрузка Партнерство   О компании Контакты  
 
                    
  Карта Сайта   
   





OLE Automation для работы с Excel

Автор: Konstantin Khripkov


Подскажите мне основные функции OLE Automation для работы с Excel из Delphi.

Есть множество статей по этому вопросу. Смотри также этот материал .

Я не могу привести полный код моего проекта, здесь я поместил лишь его небольшую часть, создающую и форматирующую таблицу Excel на основе содержимого DBGrid, сгенеренного с помощью SQL запроса. Код содержит некоторое форматирование ячеек. Код проверен в работе с Delphi 3 и Excel 97:


procedure TfrmBlank.btnExcelClick(Sender: TObject);
var
  XL, XArr: Variant;
  i: Integer;
  j: Integer;
begin
  {не забудьте включить ComObj в список используемых модулей}
  // Создаем массив элементов, полученных в результате запроса
  XArr := VarArrayCreate([1, EmailQuery.FieldCount], varVariant);
  XL := CreateOLEObject('Excel.Application'); // Создание OLE объекта
  XL.WorkBooks.add;
  XL.visible := true;

  j := 1;
  EmailQuery.First;
  while not EmailQuery.Eof do
  begin
    i := 1;
    while i <= EmailQuery.FieldCount do
    begin
      XArr[i] := EmailQuery.Fields[i - 1].Value;
      i := i + 1;
    end;
    XL.Range['A' + IntToStr(j),
      CHR(64 + EmailQuery.FieldCount) + IntToStr(j)].Value := XArr;
    EmailQuery.Next;
    j := j + 1;
  end;
  XL.Range['A1', CHR(64 + EmailQuery.FieldCount) + IntToStr(j)].select;
  // XL.cells.select;                     // Выбираем все
  XL.Selection.Font.Name := 'Garamond';
  XL.Selection.Font.Size := 10;
  XL.selection.Columns.AutoFit;
  XL.Range['A1', 'A1'].select;
end;

Дополнение

При однопроходной передачи полной страницы гораздо удобнее использовать двумерный Variant Array, чем запихивать данные туда построчно. Функция VarArrayCreate позволяет создать многомерные массивы при определении 2N (где N - кол-во измерений) границ массива в аргументе Bounds.

           




Программы  |  Загрузка  |  Партнерство  |  О компании  |  Контакты

Copyright © LSD Software 2006 - 2011