Страница 1 из 1
Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 27 июн 2011, 19:23
Masygreen
все время мучаюсь с определением количества строк для excel, чаще всего когда есть более менее удобные алгоритмы посчитать сколько будет строк
вопрос : можно ли переопределить количество строк после окончания вывода содержательной части ...
т.е. написать
а потом перед как нибудь определить что матрица размером 100х18?
ну или какой нибудь динамический расширитель массива типа alloc
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 28 июн 2011, 00:12
edward_K
1. кто вам мешает заранее определить кол-во строк а потом создать матрицу, а сразу после вывода ее сбросить?
2. Обычно матрицу задают на небольшое кол-во строк - скажем на 1000, после того как счетчик строк превышает, выводят и чистят.
Я делаю так
Код: Выделить всё
if wrow-matrixsdvig>matrixlen
{ MyxlWriteMatrix(wrow) ;
}
.Function MyxlWriteMatrix(wrow:longint) :boolean ;
begin
MyxlWriteMatrix:=xlWriteMatrixToExcel(matrixsdvig+1,0) ;
xlClearMatrix ;
matrixsdvig:=wrow-1 ;
end.
Выводить заведомо большую матрицу медленно
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 28 июн 2011, 11:46
Masygreen
1)тут вся фишка как раз в том что 1000 это тоже много ... (хотя ни кто не мешает и по 30 выводить..) дело не в скорости, а в том чтоб бегунком в Excel если опустится вниз, то мы бы оказались не на херзнает какой строчке, а на конце таблицы..
2)насколько я понял из примера это при каждом инкременте счетчика строк - надо проверку делать, дополнительно запоминать смещение от предыдущего вывода ..
если другого варианта нет и ни каким анализом просчитать примерное количество строк не удается, буду вашим методом пользоваться.Спасибо
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 28 июн 2011, 15:16
Den
Может тупо CTRL+END или так не нравится ? )
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 28 июн 2011, 17:37
Vik
Очень специфично описана проблема, поэтому может не правильно понял. Но, если после вывода в Excel нужно определить используемый диапазон, есть функция xlGetUsedRange
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 28 июн 2011, 18:34
Masygreen
наверно это будет самое то..
спасибо всем за участие
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 02 июл 2011, 14:34
m0p3e
Кроме того практически все функции при некорректно заданном диапазоне (например 0,0,0,0) используют реально заполненный диапазон.
А насчет динамического увеличения количества строк в матрице надо писать в ТП. Делается за 2 секунды. Почему было удалено - большой вопрос...
Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 04 июл 2011, 12:34
Masygreen
m0p3e писал(а):Кроме того практически все функции при некорректно заданном диапазоне (например 0,0,0,0) используют реально заполненный диапазон.
А насчет динамического увеличения количества строк в матрице надо писать в ТП. Делается за 2 секунды. Почему было удалено - большой вопрос...
попробую с нулями ! интересная идея

насчет простого я бы так не сказал, но реально это не сложно .... видимо осбо не надо да и мы молчим

Re: Поменять кол-во строк xlCreateMatrix(500000,18)
Добавлено: 04 июл 2011, 13:29
m0p3e
Masygreen писал(а):насчет простого я бы так не сказал, но реально это не сложно .... видимо осбо не надо да и мы молчим

В доработанных исходниках ExcelLib под OO это было сделано. Но из рабочей сборки вырезали.

Добавлялась одна строчка.
Код: Выделить всё
If Row > VarArrayHighBound ( CurMatrix, 2 ) then VarArrayRedim ( CurMatrix, Row );
Куда уж проще?