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

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

28 Ноябрь 2020, 19:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: ConditionalFormat -как получить цвет ячейки  (Прочитано 323 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ammaretto
Новичок
*
Offline Offline

Сообщений: 1


« Стартовое сообщение: 2 Ноябрь 2020, 07:03 »

Здравствуйте!
Помогите, пожалуйста.
Задача переписать макрос с exсel на LO
Переносим значения из одного файла в другой. Если ячейка закрашена в серый цвет , то не переносим.
Ячейка может быть закрашена через формат ячейки или условное форматирование(причем для одной ячейки может быть несколько формул в условном форматировании).
В exсel функция  ws2.Cells(i, j).DisplayFormat.Interior.ColorIndex возвращает явный цвет ячейки, с учётом условного форматирования.
В LO функция ws2.GetCellByPosition(j,i).getPropertyValue("CellBackColor") возвращает цвет, который задан через  формат ячейки, не зависимо от условного форматирования.
Подскажите, пожалуйста, есть ли в LO получить явный цвет ячейки, с учетом формата и условного форматирования?
Или хотя бы получить стили из условного форматирования и формулы, может есть функция или свойство, определяющие выполняется ли условное форматирование для данной ячейки?
Нашла только, как задать условное форматирование
REM именах типа UI.
oRange = ThisComponent.Sheets(3).getCellRangeByName("B2:D6")
REM Получим объект проверки
 oConFormat = oRange.ConditionalFormat oCondition(0).Name = "Operator"
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.LESS
oCondition(1).Name = "Formula1
 oCondition(1).Value = 0
oCondition(2).Name = "StyleName"
 oCondition(2).Value = "Heading1"
oConFormat.addNew(oCondition())
oRange.ConditionalFormat = oConFormat
Записан
eeigor
Ubuntu 18.04 LTS • LO 7.0.2.2
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 194



« Ответ #1: 11 Ноябрь 2020, 11:33 »

Или хотя бы получить стили из условного форматирования...
Решение следующее:
На листе (см. скриншоты 1 и 2) ячейка A2 закрашена явно: CellBackColor = RGB(128, 128, 128); CharColor = RGB(255, 255, 255),
а ячейка A3 - неявно (применено условное форматирование по значению ячейки, равным "Grey", через присвоение одноимённого стиля "Grey", в котором фон - серый, а цвет шрифта - белый; однако значения формата, как вы и пишите, через свойства не читаются, равны -1).
На скриншоте 3 мы видим свойства условного формата ячейки A3 (StyleName = "Grey").
Ниже приведён пример получения имени стиля условного формата соответствующей ячейки.
Код:
Sub Main
    MsgBox ThisComponent.CurrentController.ActiveSheet _
     .getCellRangeByName("A3").ConditionalFormat.getByIndex(0).getStyleName(), , "Style Name"  'returns "Grey"
End Sub

UPD: Естественно, если для ячейки задан условный формат, то свойство <.ConditionalFormat.Count> будет больше 0.
Иначе код выше для прочей ячейки выдаст ошибку (см. скриншот 4).


* Снимок экрана от 2020-11-11 11-14-32.png (253.2 Кб, 1920x1080 - просмотрено 3 раз.)

* Снимок экрана от 2020-11-11 11-15-33.png (7.88 Кб, 303x93 - просмотрено 2 раз.)

* Снимок экрана от 2020-11-11 11-16-30.png (101.81 Кб, 888x688 - просмотрено 3 раз.)

* Снимок экрана от 2020-11-11 13-03-07.png (26.34 Кб, 709x214 - просмотрено 3 раз.)
« Последнее редактирование: 11 Ноябрь 2020, 13:04 от eeigor » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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