как применить стили к части текста в ячейке

Автор Михааил, 27 октября 2022, 22:07

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

Михааил

Доброго дня. Подскажите как можно применить к части текста в ячейке другие стили - цвет, шрифт, толщина ?

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Михаил53


kompilainenn

Стили никак, только ручное форматирование в каждой конкретной ячейке. Потому что в Calc есть только "Стили ячейки" и "Стили страниц", а вот отдельных стилей абзаца, символов - нету
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Михаил53

Цитата: kompilainenn от 28 октября 2022, 19:55Стили никак, только ручное форматирование в каждой конкретной ячейке. Потому что в Calc есть только "Стили ячейки" и "Стили страниц", а вот отдельных стилей абзаца, символов - нету

Однако если можно в ручном режиме изменить стили отдельных частей текста в одной ячейке, то и в объектной модели они должны быть реализованы. Как это сделать в Excel я знаю, а как в Calc не нашел информации

bigor

Цитата: Михаил53 от 29 октября 2022, 09:28Однако если можно в ручном режиме изменить стили отдельных частей текста в одной ячейке
изменить можно формат символов для части ячейки. Стиль с установленными для него параметрами устанавливается на всю ячейку. Его (формат символов)  можно и через макрос поменять
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Михаил53

Цитата: Bigor от 29 октября 2022, 11:57Его (формат символов)  можно и через макрос поменять
попробовал пример, у меня выскакивает ошибка: свойства или метод не найдены - CharBackColor

sokol92

Давайте вместе посмотрим. Прикрепите документ в формате .ods, содержащий макрос, в котором выдается вышеуказанная ошибка.
Владимир.

Михаил53

просто сохранил пример как есть в макросы книги и при выполнении ошибка

sokol92

У Вас версия офиса OpenOffice/4.1.13, которая уже давно не поддерживается.

"По умолчанию" мы обсуждаем программный продукт LibreOffice, поэтому об использовании OpenOffice лучше упоминать в заголовке темы или тексте сообщения.

Возможно, кто-нибудь из владельцев OpenOffice сможет помочь.
Владимир.

mikekaganski

Цитата: sokol92 от 30 октября 2022, 17:19OpenOffice/4.1.13, которая уже давно не поддерживается

Это слишком спорное утверждение, поэтому стоит как-то его переформулировать.
Например:

Apache OpenOffice не развивается (и его поддержка в виде выпусков минорных релизов фактически сохраняет программу в том же состоянии, как и десять лет назад); большинство завсегдатаев форума пользуются преимущественно LibreOffice, которые развивается гораздо более динамично. В любом случае, каким бы продуктом Вы ни пользовались, пожалуйста упоминайте полную информацию из справки "о программе".
С уважением,
Михаил Каганский

mikekaganski

#11
Итак, в #8 прикреплён файл со следующим кодом:

Sub SelectTextInCell
' выделяем первые 3 символа
    Dim oCell, oSheet, oCursor, oVCurs
    oSheet = thisComponent.CurrentSelection.getSpreadsheet
    oCell = oSheet.GetCellbyPosition(0, 0)   
    ThisComponent.CurrentController.Select(oCell)  ' выделение ячейки
    oCell.setString("12345")
    oCursor=oCell.Text.createTextCursor()
    oCursor.gotoStart(False)  ' на начало текста
    oCursor.goRight(3, true)
    oCursor.CharBackColor = RGB(0,0,0)
    oCursor.CharColor = RGB(255,255,255)
    MsgBox oCursor.getString
    oCursor.CharColor = RGB(0,0,0)
    oCursor.CharBackColor = RGB(255,255,255)
End Sub

Этот код не работает в Apache OpenOffice - ошибку вызывает неизвестное свойство CharBackColor; а в LibreOffice работает начиная с версии 4.4 - это результат работы Matteo Campanelli (GSoC 2014). Однако эта работа была направлена на поддержку фона символов в графических объектах (например, TextBox), и то, что в ячейках Calc оно тоже "работает" - это побочный (и, возможно, неожиданный) эффект (просто так уж есть, что и в графических объектах, и в ячейках Calc используется EditEngine). У MS Excel тоже нет возможности задать фон символов в ячейке. И поэтому никто не проверял и не реализовывал полную поддержку этого свойства в Calc - баг 151839 показывает, что оно не сохраняется в файле.

Если же не использовать фон текста, то код работает и в LibreOffice, и в Apache OpenOffice. Пользуйтесь общим подмножеством поддерживаемых свойств.
С уважением,
Михаил Каганский

sokol92

Михаил, спасибо за исследование и предложения!
Владимир.