如何在 c# 中将文本从 RTF 插入到 Word 文档

本文关键字:插入 RTF Word 文档 文本 | 更新日期: 2023-09-27 18:36:22

我正在使用winservice来创建Word文档。
我唯一的问题是将 rtf 粘贴到单词选择。

我有这个代码:

private static void PasteRtf(object bookmarkName, 
                             OFFICE.Application wordApplication, 
                             Document wordDocument, string rtfText, bool winservice)
    {
        if(bookmarkName == null ||
           wordApplication == null ||
           wordDocument == null) return;
        if (!winservice)
        {
            Clipboard.Clear();
            Clipboard.SetText(rtfText, TextDataFormat.Rtf);
            IDataObject formatedText = Clipboard.GetDataObject();
            if (formatedText != null)
            {
                wordDocument.Bookmarks[bookmarkName].Range.Select();
                Selection sel = wordApplication.Selection;
                sel.Paste();
            }
            Clipboard.Clear();
        }
        else
        {
            ????
        }
    }

您知道如何在不使用剪贴板的情况下做到这一点吗?

如何在 c# 中将文本从 RTF 插入到 Word 文档

解决方案:

wordDocument.Bookmarks[bookmarkName].Range.Select();
Selection sel = wordApplication.Selection;
wf.RichTextBox tb = new wf.RichTextBox();
tb.Rtf = rtfText;
string fileName = Path.Combine(UserInfo.User.TempPath,
                                                   Guid.NewGuid() + ".rtf");
tb.SaveFile(fileName, wf.RichTextBoxStreamType.RichText);
object ConfirmConversions = false;
object Link = false;
object Attachment = false;
object lMissing = System.Reflection.Missing.Value;
sel.InsertFile(fileName, ref lMissing, ref ConfirmConversions, ref Link, ref Attachment);
File.Delete(fileName);

如果您的 RTF 文本(或 Word 或任何其他兼容格式)位于文件中,则可以使用 Range.InsertFile 或 Bookmark.InsertFile 方法:

string FileName = "C:''Sales.docx";
object ConfirmConversions = false;
object Link = false;
object Attachment = false;
bookmark1.InsertFile(FileName, ref missing, ref ConfirmConversions, ref Link, ref Attachment);

Range.InsertFile Method (Word)
书签.插入文件方法

Word 需要一个转换器才能将 RTF 集成到文档中。转换器仅在以下情况下运行

  1. 内容从剪贴板粘贴(您说您不想要)
  2. 打开或插入文件(SashaDu建议,您也不想要)

没有将RTF(或HTML,就此而言)"流式传输"到Word文档中的选项。

唯一的另一种可能性是首先将RTF转换为OOPC平面文件格式的有效WordOpenXML。可以使用 Word 的 Range.InsertXml 方法将其插入到文档中。可能有第三方工具可以为您执行此操作。或者你需要编写自己的RTF->WordOpenXML转换器。