Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.88
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
#1

Прога - Буфер обмена - Word, Excel. - Delphi

22.09.2009, 10:09. Просмотров 5149. Ответов 7
Метки нет (Все метки)

Всех приветствую!
Вопрос такой. Как подсказать Ворду и Экселю, что данные в буфере обмена - это текст в формате RTF?
Мне нужно таблицу через буфер обмена в эти приложения передавать. Формат указываю как CF_TEXT. Если оформляю данные в виде HTML текста, то Эксель понимает, что это таблица, а Ворд - нет - он производит вставку "как есть" - т. е. в Вордовский документ вываливается HTML код. :-) Так как все приложения офиса понимают RTF формат (он родной для них), то попытался передавать данные в RTF разметке. Оказалось, Ворд и Эксель его вставляют тоже "как есть". :-\
Как объяснить Ворду с Экселем, что в буфере текст в RTF формате?
Или, вообще, как показать этим приложениям (особенно Ворду), что в буфере данные в табличной форме?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2009, 10:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прога - Буфер обмена - Word, Excel. (Delphi):

Буфер обмена - Delphi
как занести из делфи инфу(текст) в буфер обмена, а потом вставить ее в любое текстовое поле windows? Добавлено через 7 минут имеется...

Нестандартный буфер обмена - Delphi
Здравствуйте, Уважаемые профессионалы! Я конено прочитал правила, но к сожалению даже не знаю как подобраться к проблеме. Обшарил нет...

Буфер обмена и ссылка - Delphi
Добрый день! Как можно получить ссылку из буфера обмена? Т.е. если ты копируешь картинки, текст и т.д. программа ничего не делала, а...

Ловля события копирования в буфер обмена - Delphi
Здрасте. У меня возникла проблема с отловкой события копирования в буфер обмена. Вот код: procedure CopyClipboard(tag: TMessage); message...

Как вырезать файл в буфер обмена? - Delphi
Нужно вырезать файл в буфер обмена из-под моей программы. Так, чтобы потом можно было этот вырезанный файл вставить в любом файловом...

Как узнать, яляется ли буфер обмена пустым? - Delphi
Как узнать, яляется ли буфер обмена пустым.

7
грязный
31 / 31 / 0
Регистрация: 15.11.2008
Сообщений: 205
22.09.2009, 10:12 #2
меню-Правка-Специальная вставка - Текст в формате RFT
или я вопроса не понял?
0
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
22.09.2009, 10:33  [ТС] #3
Цитата Сообщение от грязный Посмотреть сообщение
меню-Правка-Специальная вставка - Текст в формате RFT
Ворд такого варианта даже не предлагает - "Текст в формате RTF". Там (в том меню) появляется только: "Неформатированный текст" и "Текст в кодировке UNICODE". И всё - других вариантов там нет. :-\ RTF данные которые я в буфер обмена передаю - правильные. Т. е. если я их сохраняю в файл, а затем этот файл открываю в Ворде, то Ворд нормально открывает их и показывает, как и задумывалось - таблицу. Но вот через буфер - не понимает он, что это RTF. :-\
0
грязный
31 / 31 / 0
Регистрация: 15.11.2008
Сообщений: 205
22.09.2009, 10:37 #4
какая версия ворда?
никогда не видел чтобы не было этого пункта в меню, помимо него и 2х перечисленных вами есть еще "в формате ХТМЛ"
у меня ворд 2003 (11.5604.5606), офис проф выпуск 2003
видимо вам надо докачать чегото чтоб появилось "Текст в формате RTF"
0
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
22.09.2009, 11:03  [ТС] #5
Цитата Сообщение от грязный Посмотреть сообщение
какая версия ворда?
MS Office PRO 2007.
Цитата Сообщение от грязный Посмотреть сообщение
никогда не видел чтобы не было этого пункта в меню, помимо него и 2х перечисленных вами есть еще "в формате ХТМЛ"
Сейчас ещё раз проверил. Ситация следующая.
Вот для проверки, текст в RTF разметке:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{\rtf1\ansi
\trowd\trgaph50
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx2000
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx4000
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx6000
Данные в ячейке 1.1\intbl\cell
Данные в ячейке 1.2\intbl\cell
Данные в ячейке 1.3\intbl\cell
\row
\trowd\trgaph50
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx2000
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx4000
\clbrdrt\brdrs\clbrdrl\brdrs\clbrdrb\brdrs\clbrdrr\brdrs
\cellx6000
Данные в ячейке 2.1\intbl\cell
Данные в ячейке 2.2\intbl\cell
Данные в ячейке 2.3\intbl\cell
\row
}
Если этот текст сохранить в файл. Дать файлу расширение .rtf и открыть в Ворд, то Ворд всё поймёт(переспросит перед этим, правда - "Текст в формате RTF?"), откроет документ и покажет таблицу.
1.
Но если этот текст просто скопировать в буфер обмена и попытаться вставить в Ворд, то ворд поместит на страницу этот текст "как есть". При выборе специальной вставки, предлагаются только 2 формата: "обчный текст" и "текст в формате UNICODE".
2.
Если этот текст сохранить в файле с расширением .rtf, затем отрыть, скажем в WordPad, скопировать из него весь документ (таблицу, которую он отобразит) в буфер, а затем в MS Word выбрать специальную вставку - то в вариантах уже появится "Текст в формате RTF"! И даже если вставлять через обыкновенную вставку - Ворд понмает уже, что данные в буфере обмена - это таблица и вставляет их соответственно - так как надо.

В связи с этим вопрос - как редактор WordPad пометил тип данных, которые он в буфер передал? Раз MS Word потом понял, что в буфере данные в формате RTF?
0
lexus_ilia
3048 / 708 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
22.09.2009, 13:38 #6
А при чём тут Делфи ?
0
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
22.09.2009, 14:57  [ТС] #7
Цитата Сообщение от lexus_ilia Посмотреть сообщение
А при чём тут Делфи ?
Вообще-то да - вопрос напрямую не привязан именно к Делфи. Инфа будет полезна не зависимо от того на каком языке реализовывается. Хотя так почти про любую задачу можно сказать - реализовать в разных средах можно. Можно было бы и в раздел Сpp написать. Но реализацию я делаю на Делфи.
---
Я тут разобрался. Копирую данные из документа WordPad, затем просканировал буфер обмена на предмет ИД форматов, которые задействованы. Выяснилось, что WordPad копирует информацию одновременно в форматах: ASCII, UNICODE, HTML и вроде в XML и, конечно в RTF. Причем в RTF формате WordPad кладет данные в трех вариантах - возможно генерит их под разные версии спецификации RTF.
---
Я потом отпишу сюда что накопал. Думаю многим будет полезна инфа как кинуть в буфер обмена данные со сложным форматированием, понятные для Ворда и Экселя. Особенно, что касаемо таблиц.
0
Moliby
07.10.2009, 13:19 #8
сложить два числа а+в
07.10.2009, 13:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2009, 13:19
Привет! Вот еще темы с ответами:

Выделение текста в файле и помещение его в буфер обмена - Delphi
есть у кого какие идеи как это сделать?

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

Перенесение таблиц в Word\Excel - Delphi
Скажите, как перенести таблицу StringGrid в Word\Excel? Напишите, пожалуйста, код, или совет, или предложение, как сделать полностью,...

Не закрываются офисные потоки (excel, word) - Delphi
Здравствуйте. Обнаружил что при открытии большого количества файлов, после кода: Excel.Application.Quit; Excel := Unassigned; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru