Rtf转换为CML中的WordML转换

时间:2011-02-09 12:27:58

标签: c# .net xml

我有一个Windows应用程序来生成报告。 它在RTF中有模板“{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Arial;}}\r\n\\viewkind4\\uc1\\pard\\fs20\\tab\\tab\\tab\\tab af\\par\r\n}\r\n",写入word doc文件。然后单词是Saved-As XML并关闭。然后,像(说)的标签被提取出来并且有些新的

这里的问题是Word,它在过程中用作转换器,它在Loop中消耗宝贵的时间,在那里它打开单词实例,保存,关闭,删除。

如果我已经制作并帮助我转换为WordML,请更正任何错误。

3 个答案:

答案 0 :(得分:2)

使用Aspose .Words

//your rtf string
string rtfStrx = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Arial;}}\r\n\\viewkind4\\uc1\\pard\\fs20\\tab\\tab\\tab\\tab af\\par\r\n}\r\n"

//convert string to bytes for memory stream
byte[] rtfBytex = Encoding.UTF8.GetBytes(rtfStrx);
MemoryStream rtfStreamx = new MemoryStream(rtfBytex);

Document rtfDocx = new Document(rtfStreamx);

rtfDocx.Save(@"C:\Temp.xml", SaveFormat.WordML);

这会将新文档中的RTF文本另存为WordML。我不能说时间会循环。但是,MS Word在物理上打开和关闭的时间肯定要少得多。

答案 1 :(得分:0)

除非我遗漏了某些内容,否则我假设您正在尝试从RTF模板创建Office XML文件?我认为您可以使用Open XML SDK来创建xml文件。具体来说,SDK附带的DocumentReflector似乎非常适合。见example。此外,还有一个http://www.codeguru.com/cpp/controls/richedit/conversions/article.php/c5377/,其中显示了如何从RTF转换为可能指导您的HTML。

答案 2 :(得分:-2)

使用wpf richtextbox。 Rtf => XAML。由于xaml是xml_,因此使用xslt或linq将其转换为所需的xml结构