![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отчет в Excel
ян © (2006-09-22 13:17:00)Всем Добрый день!
Ситуация такая, делаю отчет в Excel, есть готовый шаблон,
к ячейкам доступ получаю так
E.Application.Cells(15,1) := 's';
проблема в том что в каждую ячейку запись происходит примерно
за секунду!!!
но шаблон довольно сложный!!
есть ли какой способ ускорить эту процедуру?
ян (2006-09-22 17:26:00) [1]Так, двумерный массив я объявлять научился!
Идея состоит в том, чтобы данные записать вначале в массив, а потом
уже из массыва в Excel?
так лучше получается:))
но в шаблоне пропадают много(именно не все, а много) ячеек с текстом!
т. е. можно ли перед запуском программы выгрузить все значения
из шаблона в массив, сделать изменения, а потом уже обратно?
Сергей М. (2006-09-22 16:28:00) [2]
> каждые элемент которого - массив из 30 элементов
Гдеты это обозначил ?
MyVar := VarArrayCreate([0,16 4, 0, 29],varVariant);
В этом примере создается двумерный массив вариантов размерностью 165 х 30.
Сравни со своим кодом и сделай выводы ...
ян (2006-09-22 16:12:00) [3]166 на 30
MyVar := VarArrayCreate([0,165],varVariant);
for n:=0 to 165 do
begin
MyVar[n] := VarArrayOf([' ',30,TRue]);
end;
MyVar - массив из 166 элементов,
каждые элемент которого - массив из 30 элементов...только тип не понятно
как определить
Не так?
Сергей М. (2006-09-22 16:04:00) [4]
> 165 на 30
Ну и где ты обозначил именно такую размерность ?
ян (2006-09-22 16:01:00) [5]Как я понял надо написать такой код:
MyVar := VarArrayCreate([0,165],varVariant);//
for n:=0 to 165 do
begin
MyVar[n] := VarArrayOf([' ',30,TRue]);
end;
E.Application.Range['A1:DA30'].Value := MyVar;
165 на 30 это насколько я поня размер области в Excel...
Так?
Все равно быстрее не работает...
Сергей М. (2006-09-22 14:14:00) [6]
> alex_*** © (22.09.06 13:42) [3]
VarArrayOf(...) создает одномерный массив, в отличие от VarArrayCreate(..), которая создает массив произвольной размерности.
Выбор той или иной ф-ции зависит от конкретной задачи, требующей конкретной размерности массива ячеек.
alex_*** (2006-09-22 13:42:00) [7]код для создания 2 мерного массива
ян (2006-09-22 13:27:00) [8]MyVar := VarArrayOf(...); //или VarArrayCreate(..)
А что в скобках должно быть?:)
Сергей М. (2006-09-22 13:20:00) [9]Есть.
var
MyVar: Variant;
...
MyVar := VarArrayOf(...); //или VarArrayCreate(..)
E.Application.Range[..].Value := MyVar