Как вывести данные в Excel?
Материал из DRKB
Можно выводить данные последовательно в каждую ячейку, но это очень сильно замедляет работу. Лучше сформировать вариантный массив, и выполнить присвоение области (Range) этого массива.
var
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: Variant;
TemplateFile: String;
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;
end;
Author: Кулюкин Олег
Source: http://www.delphikingdom.ru/
ID: 04381