如何在RT#中将RTF中的文本插入Word文档

时间:2016-02-25 14:50:33

标签: c# ms-word rtf

我使用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
        {
            ????

        }
    }

如果不使用剪贴板,你知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

解决方案:

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);

答案 1 :(得分:1)

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

#ifndef BandHeader_h
#define BandHeader_h

#import <MicrosoftBandKit_iOS/MicrosoftBandKit_iOS.h>

#endif /* BandHeader_h */

Range.InsertFile Method (Word)
Bookmark.InsertFile Method

答案 2 :(得分:1)

Word需要转换器才能将RTF集成到文档中。转换器仅在

时运行
  1. 内容是从剪贴板(您说你不想要)
  2. 粘贴的
  3. 打开或插入文件(SashaDu建议你也不想要)
  4. &#34;流媒体&#34;没有选项将RTF(或HTML,就此而言)转换为Word文档。

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