0

我有一个字符串中的 RTF 数据,str我希望将该数据加载到 MS word 对象中。我见过Documents.Open()方法,但它需要一个物理文件路径来读取特定文件,而我没有这样的文件。

如何打开 Word 的新实例并在其中加载我的 RTF 数据?

Microsoft.Office.Interop.Word.ApplicationClass wordapp = new ApplicationClass();
wordapp.Visible = false;

string str = @"{\rtf1\ansi\ansicpg1252\uc1\deff0{\fonttbl{\f0\fnil\fcharset0\fprq2 Arial;}{\f1\fswiss\fcharset0\fprq2 Arial;}{\f2\froman\fcharset2\fprq2 Symbol;}}
{\colortbl;}{\stylesheet{\s0\itap0\nowidctlpar\f0\fs24 [Normal];}{\*\cs10\additive Default Paragraph Font;}}{\*\generator TX_RTF32 17.0.540.502;}
\paperw12240\paperh15840\margl1138\margt1138\margr1138\margb1138\deftab1134\widowctrl\formshade\sectd\headery720\footery720\pgwsxn12240\pghsxn15840\marglsxn1138\margtsxn1138\margrsxn1138\margbsxn1138\pgbrdropt32\pard\itap0\nowidctlpar\plain\f1\fs20 test1\par }";

我将在 word 中进行一些格式化,但 applicationClass 应该是wordapp.Visible = false;

更新:我不希望将文件保存在系统上。无论如何都没有在物理内存上保存它来阅读和工作吗?

4

1 回答 1

1

我认为与其尝试将 RTF 文本加载到 Word 中,不如将其加载到文本文件中(因为 RTF 文件无论如何都是纯文本),然后将该原始 RTF 文本文件作为新的 Word 文档打开。这会导致 Word 处理 RTF 文本并将其格式化为 Word 文档(带有字体/边距/等),我认为这是您要查找的内容,而不是逐字查看 RTF 文本。一旦它是一个新的 Word 文档,您可以进行操作,然后保存到一个 Word 文档文件:

        string filePath = @"c:\rawRtfText.rtf";

        //write the raw RTF string to a text file.
        System.IO.StreamWriter rawTextFile = new System.IO.StreamWriter(filePath, false);
        string str = @"{\rtf1\ansi\ansicpg1252\uc1\deff0{\fonttbl{\f0\fnil\fcharset0\fprq2 Arial;}{\f1\fswiss\fcharset0\fprq2 Arial;}{\f2\froman\fcharset2\fprq2 Symbol;}}{\colortbl;}{\stylesheet{\s0\itap0\nowidctlpar\f0\fs24 [Normal];}{\*\cs10\additive Default Paragraph Font;}}{\*\generator TX_RTF32 17.0.540.502;}\paperw12240\paperh15840\margl1138\margt1138\margr1138\margb1138\deftab1134\widowctrl\formshade\sectd\headery720\footery720\pgwsxn12240\pghsxn15840\marglsxn1138\margtsxn1138\margrsxn1138\margbsxn1138\pgbrdropt32\pard\itap0\nowidctlpar\plain\f1\fs20 test1\par }";
        rawTextFile.Write(str);
        rawTextFile.Close();

        //now open the RTF file using word.
        Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
        msWord.Visible = false;
        Microsoft.Office.Interop.Word.Document wordDoc = msWord.Documents.Open(filePath);

        //after manipulating the word doc, save it as a word doc.
        object oMissing = System.Reflection.Missing.Value;
        wordDoc.SaveAs(@"c:\RtfConvertedToWord.doc", ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
于 2013-04-15T18:12:04.000 回答