c# - 如何使用 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;
}
解决方案
该FormattedText
属性仅Ranges
在打开的 Word 文档中的两个之间有效。
就 Word 而言,RTF 不是“本机”格式。您不能使用对象模型将 RTF 编码写入 Word 并生成 Word 格式 - 您得到的只是一串字符(RTF 编码)。
Word 的本机格式是 Word Open XML,必须使用该InsertXML
方法插入(在 OPC 平面文件版本中)。
将 RTF 导入 Word 并将其转换为 Word 格式的唯一方法是
将 RTF 保存到文件并使用
InsertFile
方法 OR将 RTF 放在剪贴板上,然后将其粘贴到 Word 中。或者
您必须编写(或查找)一个转换库,将 RTF 转换为有效的 Word Open XML(以 OPC 平面文件格式)。
推荐阅读
- emacs - 在 Emacs 26.1 中挂钩新的行号模式不起作用
- c++ - 5 CPU的Task调度N个进程
- node.js - 我可以使用原生 es6 模块 (mjs) 对本地模块使用裸导入吗?
- python - ReverseMatch 适用于 jsonResponse 但不适用于渲染
- sql - oracle中如何修改OBJECT TYPE TABLE的大小
- c# - 如何获取参数的名称?
- python - 在三个 DataFrame 中寻找复合键的存在,并相应地连接 DataFrame
- servicestack - ServiceStack 没有反序列化字典
适当地 - go - 在具有特定本地地址的 GoLang 中使用 Dial
- javascript - html2canvas 选项类型:'view' 仍然呈现全身