Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

31 Март 2020, 15:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как правильно отсечь диапазон?  (Прочитано 226 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Участник
**
Offline Offline

Сообщений: 45


« Стартовое сообщение: 24 Март 2020, 16:37 »

Помогите разобраться.
Получаю диапазон ячеек (несколько столбцов и строк), и мне надо оставить только один (например, второй) столбец в этом диапазоне.
Пишу:
oAddress = oRange.Columns(1).RangeAddress

Однако oAddress.EndRow получает значение последней строки листа, т. е. берётся весь столбец на листе, а не в диапазоне.
Неожиданно, ибо в Excel не так (а как ожидалось: в пределах исходного диапазона).
Далее я корректирую oAddress самостоятельно, подсчитав количество строк в исходном диапазоне. Это неудобно.

Или делаю пересечение двух диапазонов:
oIntersection = oRange.queryIntersection(oRange.Columns(1).RangeAddress)
Полученный объект содержит пересечение двух диапазонов:
oIntersection.RangeAddresses(0).EndRow покажет правильное значение.

Что я делаю не так?
« Последнее редактирование: 24 Март 2020, 16:46 от eeigor » Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 755


« Ответ #1: 24 Март 2020, 16:55 »

Действительно, XTableColumns::getByIndex() и XTableRows::getByIndex() возвращают не подобъект диапазона, а ссылку на столбцы/строки листа.

Если Вам нужен поддиапазон, получайте его с помощью функции getCellRangeByPosition(nLeft, nTop, nRight, nBottom); например, в рассматриваемом случае

Код:
oAddress = oRange.getCellRangeByPosition(1, 0, 1, oRange.Rows.Count-1).RangeAddress
Записан

С уважением,
Михаил Каганский
eeigor
Участник
**
Offline Offline

Сообщений: 45


« Ответ #2: 24 Март 2020, 16:57 »

Естественно, когда я, как оказалось, зарядил больше миллиона ячеек, LO Calc задумался...
Кроме того, Excel, получив такой "завышенный" диапазон, не спрашивая отсёк бы его по границе UsedRange (зд. UsedArea) и быстро бы откликнулся.
Записан
eeigor
Участник
**
Offline Offline

Сообщений: 45


« Ответ #3: 24 Март 2020, 16:58 »

Спасибо
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!