首页 > 解决方案 > 如何使用 SelectContentControlsByTag 和 formattedText 将富文本粘贴到 MS Word“表单”中

问题描述

在 ms word 中,我正在尝试复制已保存在数据库中的富文本字符串,但看起来我无法直接设置 formattedText,因为它给出了错误:

错误 CS0029 无法将类型“字符串”隐式转换为“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;
            }

标签: c#formsms-wordrtf

解决方案


FormattedText属性仅Ranges在打开的 Word 文档中的两个之间有效。

就 Word 而言,RTF 不是“本机”格式。您不能使用对象模型将 RTF 编码写入 Word 并生成 Word 格式 - 您得到的只是一串字符(RTF 编码)。

Word 的本机格式是 Word Open XML,必须使用该InsertXML方法插入(在 OPC 平面文件版本中)。

将 RTF 导入 Word 并将其转换为 Word 格式的唯一方法是

  1. 将 RTF 保存到文件并使用InsertFile方法 OR

  2. 将 RTF 放在剪贴板上,然后将其粘贴到 Word 中。或者

  3. 您必须编写(或查找)一个转换库,将 RTF 转换为有效的 Word Open XML(以 OPC 平面文件格式)。


推荐阅读