Поменять кол-во строк xlCreateMatrix(500000,18)

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Masygreen »

все время мучаюсь с определением количества строк для excel, чаще всего когда есть более менее удобные алгоритмы посчитать сколько будет строк

Код: Выделить всё

 xlCreateMatrix(_RowCount,18);
вопрос : можно ли переопределить количество строк после окончания вывода содержательной части ...
т.е. написать

Код: Выделить всё

xlCreateMatrix(5000000,18);
а потом перед как нибудь определить что матрица размером 100х18?

Код: Выделить всё

 xlWriteMatrixToExcel(1,1);
ну или какой нибудь динамический расширитель массива типа alloc
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение 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.
Выводить заведомо большую матрицу медленно
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Masygreen »

1)тут вся фишка как раз в том что 1000 это тоже много ... (хотя ни кто не мешает и по 30 выводить..) дело не в скорости, а в том чтоб бегунком в Excel если опустится вниз, то мы бы оказались не на херзнает какой строчке, а на конце таблицы..
2)насколько я понял из примера это при каждом инкременте счетчика строк - надо проверку делать, дополнительно запоминать смещение от предыдущего вывода ..
если другого варианта нет и ни каким анализом просчитать примерное количество строк не удается, буду вашим методом пользоваться.Спасибо
Время ведет!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Den »

Может тупо CTRL+END или так не нравится ? )
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Vik »

Очень специфично описана проблема, поэтому может не правильно понял. Но, если после вывода в Excel нужно определить используемый диапазон, есть функция xlGetUsedRange
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Masygreen »

Код: Выделить всё

xlGetUsedRange
наверно это будет самое то..
спасибо всем за участие
Время ведет!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение m0p3e »

Кроме того практически все функции при некорректно заданном диапазоне (например 0,0,0,0) используют реально заполненный диапазон.

А насчет динамического увеличения количества строк в матрице надо писать в ТП. Делается за 2 секунды. Почему было удалено - большой вопрос...
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение Masygreen »

m0p3e писал(а):Кроме того практически все функции при некорректно заданном диапазоне (например 0,0,0,0) используют реально заполненный диапазон.

А насчет динамического увеличения количества строк в матрице надо писать в ТП. Делается за 2 секунды. Почему было удалено - большой вопрос...
попробую с нулями ! интересная идея :) насчет простого я бы так не сказал, но реально это не сложно .... видимо осбо не надо да и мы молчим :)
Время ведет!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Поменять кол-во строк xlCreateMatrix(500000,18)

Сообщение m0p3e »

Masygreen писал(а):насчет простого я бы так не сказал, но реально это не сложно .... видимо осбо не надо да и мы молчим :)
В доработанных исходниках ExcelLib под OO это было сделано. Но из рабочей сборки вырезали. :(
Добавлялась одна строчка.

Код: Выделить всё

  If Row > VarArrayHighBound ( CurMatrix, 2 ) then VarArrayRedim ( CurMatrix, Row );
Куда уж проще?
Ответить