Массивы массивов, getDataArray() / setDataArray() и одномерные массивы

Автор ost, 23 августа 2016, 08:44

0 Пользователи и 1 гость просматривают эту тему.

ost

Доброго.

Подскажите, пожалуйста, как проще записать данные из массива в интервал на листе Calc.

Делаю так:
aCheckArray() - одномерный массив-источник, содержащий данные для записи на лист.

oRangeTarget=oSheetTarget.getCellRangeByPosition(0,0, 0,UBound(aCheckArray()) 'получаем целевой интервал
aRangeTarget()=oRangeTarget.getDataArray() 'определяем целевой массив массивов

'цикл распихивания внутрь массива массивов значений из одномерного массива-источника
For i=0 to UBound(aRangeTarget())
aRangeTmp()=aRangeTarget(i) 'получаем вложенный массив
aRangeTmp(0)= aCheckArray(i)
Next i
oRangeTarget.setDataArray(aRangeTarget()) 'пишем в целевой интервал целевой массив, заполненный данными одномерного массива-источника.


Не нравятся телодвижения с организацией цикла. Проще никак?

rami

Цитата: ost от 23 августа 2016, 06:44Не нравятся телодвижения с организацией цикла. Проще никак?
Если писать данные в столбец, без цикла не обойтись. Проще будет так:
For i=0 to UBound(aRangeTarget())
aRangeTarget(i)(0)=aCheckArray(i)
Next

ost

#2
Спасибо!

А обычный двумерный массив (не массив массивов) напрямую, так же изящно как и с помощью setDataArray, можно записать в интервал на листе?

JohnSUN

#3
Нет, изящное - это именно такое, массив массивов с помощью .setDataArray()
Самое простое - это изначально построить алгоритм так, чтобы накапливать результат сразу в таком виде, в виде "массива массивов".
Это не сложно, а через некоторое время (когда войдет в привычку) вообще кажется единственно верным способом использования памяти

PS. Вот, например, aCheckArray() из первого сообщения. Ты ведь присваиваешь ему значения как-то так, да?
aCheckArray(i) = <какое-то значение>Просто измени эту строку на
aCheckArray(i) = Array(<какое-то значение>)и уже не нужно будет перепаковывать в другую структуру перед записью
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ost