Как вставить richtext в «форму» MS Word, используя SelectContentControlsByTag и formattedText - PullRequest
0 голосов
/ 25 апреля 2018

в слове ms Я пытаюсь скопировать строку richtext, которую я сохранил в базе данных, но похоже, что я не могу установить formattedText напрямую, поскольку выдает ошибку:

Ошибка CS0029 Не удается неявно преобразоватьвведите 'string' в 'Microsoft.Office.Interop.Word.Range'

вырезание кода:

var rtf = tq.Descr_Rtf;//dr["tq_descr_rtf"] + "";
            if (rtf != "")
            {
                try { System.Windows.Forms.Clipboard.SetText(rtf, System.Windows.Forms.TextDataFormat.Rtf); }
                catch (Exception ex)
                { MessageBox.Show(ex.Message); }


                wd.SelectContentControlsByTag("Descr")[1].Range.FormattedText = rtf;
            }
            else
            {
                wd.SelectContentControlsByTag("Descr")[1].Range.FormattedText.Text = tq.Descr;// rtf;
            }

1 Ответ

0 голосов
/ 25 апреля 2018

Свойство FormattedText работает только между двумя Ranges в открытых документах Word.

RTF не является "родным" форматом для Word. Вы не можете записать RTF-кодирование в Word с использованием объектной модели и получить формат Word - все, что вы получите, это строка символов (кодировка RTF).

Родным форматом Word является Word Open XML, и его необходимо вставить (в версии плоского файла OPC), используя метод InsertXML.

Единственные способы, которыми вы можете перевести RTF в Word и преобразовать его в формат Word, это

  1. сохранение RTF в файл и использование метода InsertFile ИЛИ

  2. поместите RTF в буфер обмена и вставьте его в Word. ИЛИ

  3. вам нужно написать (или найти) библиотеку разговоров, которая преобразует RTF в действительный Word Open XML (в формате плоского файла OPC).

...