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

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

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

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Выделение определенного слова, состояние ячеек  (Прочитано 1424 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Форумчанин
***
Offline Offline

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



« Ответ #57161: 21 Январь 2021, 23:49 »

Уже теплее... Приглядитесь. Пока не всё понятно, но аналогия с упомянутом выше кодом прослеживается.
И вот с чем надо работать:
 com.sun.star.util.TextSearch Информации почти нет.
 com.sun.star.util.SearchOptions

The .FindFirst finds all cells in the spreadsheet that contain SearchString. If you want to search within the string, then you need com.sun.star.util.TextSearch.
Код:
Sub getMktValue()
  Dim oDoc as Object
  Dim oSheet as Object
  Dim oCell as Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets.getByName("Income")
  'regex test code'
  oCell = oSheet.getCellByPosition(0, 1)
  stk = oCell.getString()

  oTextSearch = CreateUnoService("com.sun.star.util.TextSearch")
  oOptions = CreateUnoStruct("com.sun.star.util.SearchOptions")
  oOptions.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP
  oOptions.searchString = "\((.*)\)"
  oTextSearch.setOptions(oOptions)
  oFound = oTextSearch.searchForward(stk, 0, Len(stk))
  sFound = mid(stk, oFound.startOffset(0) + 1, oFound.endOffset(0) - oFound.startOffset(0))
  MsgBox sFound
  sFound = mid(stk, oFound.startOffset(1) + 1, oFound.endOffset(1) - oFound.startOffset(1))
  MsgBox sFound
End Sub

Да, совершенно неожиданно. UNO-сервисы и структуры вместо объектов. И самому хоть с Xray, хоть с MRI никогда не догадаться. Но у меня сейчас уже нет времени. Если кто-то реализует ту самую функцию REGEX_SELECT в первом приближении, поделитесь. Доведём до ума вместе.

https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XTextSearch.html#a8e62cf8b8b7cee9c8d2907cb4aad2fc5
« Последнее редактирование: 22 Январь 2021, 00:09 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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