Delphi-Help

Главная Статьи Microsoft Office Excel Вывод массива в Excel

Вывод массива в Excel

Оцените материал
(0 голосов)


Вывод массива в Excel

uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  M = 7;
  N = 10;
var
  exApp, exBook, exSheet : Variant;
  Arr : array of array of Integer;
  i, j, Row, Col : Integer;
begin
  try
    //Попытка подключиться к уже запущенному экземпляру Excel.
    exApp := GetActiveOleObject('Excel.Application');
  except
    try
      //Попытка запустить и подключиться к Excel.
      exApp := CreateOleObject('Excel.Application');
    except
      MessageDlg(
        'Не удалось подключиться к Excel. Действие отменено.'
        ,mtError, [mbOK], 0
      );
      Exit;
    end;
  end;
 
  SetLength(Arr, M, N);
  Randomize;
  for i := 0 to M - 1 do
  for j := 0 to N - 1 do begin
    Arr[i, j] := Random(10); //0..9.
  end;
 
  exApp.Visible := True;
  //Создаём рабочую книгу.
  exBook := exApp.Workbooks.Add;
  //Подключаемся к первому листу раб. книги.
  exSheet := exBook.Worksheets[1];
 
  //Для ускорения вывода данных в Excel, можно отключать обновление окна Excel.
  //Это полезно выполнять в случае, когда на лист передаётся много данных -
  //например, таблица из нескольких тысяч строк.
  //exApp.ScreenUpdating := False;
 
  exSheet.Cells[2, 2].Value := 'Таблица, переданная из внешней программы.';
  Row := 3;
  Col := 3;
  for j := 0 to N - 1 do begin
    exSheet.Cells[Row, Col + j].Value := 'Колонка №' + IntToStr(j + 1);
  end;
  Inc(Row);
  for i := 0 to M - 1 do
  for j := 0 to N - 1 do begin
    exSheet.Cells[Row + i, Col + j].Value := Arr[i, j];
  end;
 
  //Выравниваем ширину столбцов таблицы по ширине содержащихся в них данных.
  for j := 0 to N - 1 do begin
    exSheet.Columns[Col + j].AutoFit;
  end;
 
  //Включаем режим обновления окна Excel.
  //exApp.ScreenUpdating := True;
 
  //Отключаемся от объектов OLE-автоматизации.
  //В этом примере это делать не обязательно, т. к. соответствующие
  //переменные являются локальными и связанные с ними объекты будут
  //освобождены автоматически при выходе из процедуры.
  //Но если переменные являются глобальными и нам они в дальнейшем
  //не понадобятся, то следует их освободить.
  //Код обнуления, в случае глобальных переменных, следует добавить,
  //например, в обработчик события OnDestroy формы. Или в раздел
  //finalization модуля.
  //Если объекты OLE-автоматизации не освободить, то процесс Excel и связанные
  //объекты Excel так и останутся в памяти.
  exSheet := UnAssigned;
  exBook := UnAssigned;
  exApp := UnAssigned;
end;
Другие материалы в этой категории: Разные способы экспорта данных в Excel »

Авторизация



Счетчики