Форматированный текст перенести в excel

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

Помогите кто знает или уже решил данный вопрос, смотрел по форуму ответа не нашел, если есть, укажите, буду благодарен.

Нужно, чтобы клиент сам набрал текст в одном поле файла (нужно форматированным только это поле), в одной строке размер и формат текста (обычный, жирный, курсив) может быть разный.
После чего данный текст с этого поля вывести в ячейку Excel.

Как или с помощью чего можно вывести (перенести) форматированный текст из clarion в Excel.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
morkovin
Ветеран
Сообщения: 934
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 9 раз
Поблагодарили: 4 раза
Контактная информация:

Форматированный текст перенести в excel

Сообщение morkovin »

gopstop2007 писал(а): 12 Май 2025, 18:39 Нужно, чтобы клиент сам набрал текст в одном поле файла (нужно форматированным только это поле), в одной строке размер и формат текста (обычный, жирный, курсив) может быть разный.
Если использовать поле типа RichEditField, форматирование переносится в MSWord и далее из MSWord в Excel. Напрямую (минуя Ворд) форматирование не переносится - только текст. Надо разбираться, похоже без макросов не обойтись
WBR, morkovin
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Форматированный текст перенести в excel

Сообщение RaFaeL »

libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Аватара пользователя
morkovin
Ветеран
Сообщения: 934
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 9 раз
Поблагодарили: 4 раза
Контактная информация:

Форматированный текст перенести в excel

Сообщение morkovin »

RaFaeL писал(а): 13 Май 2025, 19:40 libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Может проще воспользоваться https://www.win2pdf.com/doc/command-lin ... -docx.html. И далее эту строку передать в ячейку Excel через проверенный SoftMasters?
WBR, morkovin
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

morkovin писал(а): 14 Май 2025, 11:27
RaFaeL писал(а): 13 Май 2025, 19:40 libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Может проще воспользоваться https://www.win2pdf.com/doc/command-lin ... -docx.html. И далее эту строку передать в ячейку Excel через проверенный SoftMasters?
Спасибо. Пробовал, используя MSWord, текст форматирует только слова целиком, если используется в слове несколько шрифтов, например: (QWERTY) не форматируется, еще если есть перенос строки при последующем переносе в Excel, эта строка переносится на следующую ячейку.
Последний раз редактировалось gopstop2007 15 Май 2025, 11:13, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

RaFaeL писал(а): 13 Май 2025, 19:40 libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Мне нужно используя шаблон в Excel, заполнить его данными
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5157
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Форматированный текст перенести в excel

Сообщение kreator »

gopstop2007 писал(а): 15 Май 2025, 11:12
RaFaeL писал(а): 13 Май 2025, 19:40 libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Мне нужно используя шаблон в Excel, заполнить его данными
OLE не годится?
С другой стороны вопрос - зачем шаблон, если форматирование ячеек всё равно зависит от пользователя?
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

kreator писал(а): 15 Май 2025, 13:36
gopstop2007 писал(а): 15 Май 2025, 11:12
RaFaeL писал(а): 13 Май 2025, 19:40 libxlsxwriter умеет писать форматированный текст в Excel. Но синтаксис отличен от RTF. Если напишите прокладку между форматами, которая будет форматировать одно в другое, то все возможно
Мне нужно используя шаблон в Excel, заполнить его данными
OLE не годится?
С другой стороны вопрос - зачем шаблон, если форматирование ячеек всё равно зависит от пользователя?
Одно поле в котором копируются например характеристики товаров:

Характеристики
Модель 9048
Размер - 220 235 см.
Вес - 2200 гр.
Плотность -480 гр./м 2
Тип ткани - микрофибра
Упаковка - сумка с ручками
Производитель - Китай
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5157
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Форматированный текст перенести в excel

Сообщение kreator »

Понятно. И всё же. OLE устраивает? Не знаете как отформатировать поле через OLE? Принцип такой. Кусок текста (с такого символа по такой) делается жирным (курсивом и т.д.). Посмотреть точнее - создать макрос. Могу у себя в анналах посмотреть, точно делал что-то подобное.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

kreator писал(а): 15 Май 2025, 21:44 Понятно. И всё же. OLE устраивает? Не знаете как отформатировать поле через OLE? Принцип такой. Кусок текста (с такого символа по такой) делается жирным (курсивом и т.д.). Посмотреть точнее - создать макрос. Могу у себя в анналах посмотреть, точно делал что-то подобное.
Наверное да, надо посмотреть на результат. Огромное спасибо. )
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5157
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Форматированный текст перенести в excel

Сообщение kreator »

Типа такого:

Код: Выделить всё

        LOC:OLE{'ActiveChart.ChartTitle.Select'} 
        LOC:TempString = 'Статистика по категориям несоответствий' & '<13>Подразделение: ' & clip(LOC:Department3Name) & '<13>Категория: ' & clip(LOC:CategoriesQueue.LOC:CQCategoryName) 
        LOC:OLE{'ActiveChart.ChartTitle.Text'} = LOC:TempString
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters.Text'} = LOC:TempString
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.ParagraphFormat.TextDirection'} = 1                                                           ! msoTextDirectionLeftToRight
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.ParagraphFormat.Alignment'} = 0                                                               ! msoAlignLeft
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(41, 14).Font.Size'} = 12
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(41, 14).Font.Bold'} = 0
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(56, ' & len(clip(LOC:Department3Name)) & ').Font.Size'} = 14
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 1) & ', 10).Font.Size'} = 12
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 1) & ', 10).Font.Bold'} = 0
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 12) & ', ' & len(clip(LOC:CategoriesQueue.LOC:CQCategoryName)) & ').Font.Size'} = 14
Это заголовок диаграммы. Просто текст в ячейке, наверно, не найду. Давно OLE не используется.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Форматированный текст перенести в excel

Сообщение gopstop2007 »

kreator писал(а): 16 Май 2025, 21:58 Типа такого:

Код: Выделить всё

        LOC:OLE{'ActiveChart.ChartTitle.Select'} 
        LOC:TempString = 'Статистика по категориям несоответствий' & '<13>Подразделение: ' & clip(LOC:Department3Name) & '<13>Категория: ' & clip(LOC:CategoriesQueue.LOC:CQCategoryName) 
        LOC:OLE{'ActiveChart.ChartTitle.Text'} = LOC:TempString
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters.Text'} = LOC:TempString
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.ParagraphFormat.TextDirection'} = 1                                                           ! msoTextDirectionLeftToRight
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.ParagraphFormat.Alignment'} = 0                                                               ! msoAlignLeft
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(41, 14).Font.Size'} = 12
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(41, 14).Font.Bold'} = 0
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(56, ' & len(clip(LOC:Department3Name)) & ').Font.Size'} = 14
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 1) & ', 10).Font.Size'} = 12
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 1) & ', 10).Font.Bold'} = 0
        LOC:OLE{'Selection.Format.TextFrame2.TextRange.Characters(' & (56 + len(clip(LOC:Department3Name)) + 12) & ', ' & len(clip(LOC:CategoriesQueue.LOC:CQCategoryName)) & ').Font.Size'} = 14
Это заголовок диаграммы. Просто текст в ячейке, наверно, не найду. Давно OLE не используется.
Попробую, спасибо.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить