调用Word for rtf到docx转换

时间:2011-02-04 21:49:20

标签: c# .net ms-word rtf office-interop

我需要定期以编程方式将* .rtf文件转换为* .docx。手动,这可以正常使用Word 2007中的另存为...得到的docx表现得很好。以编程方式,我无法让它工作。

我尝试的基本上如下:

Fetch RTF from Word

......但反方向。我打开* .rtf并使用SaveAs到* .docx,而不是打开* .docx并使用SaveAs到* .rtf。但是,生成的文件不会打开,显然有些东西我不明白。是

wordApp.Documents.Open(@"D:\Bar\foo.rtf")

不是合法的事情吗?

对于如何做到这一点的任何想法将不胜感激。

3 个答案:

答案 0 :(得分:4)

您可以尝试使用此代码,它适用于我

var wordApp = new Microsoft.Office.Interop.Word.Application();
var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf");
currentDoc.SaveAs(@"C:\TestDocument.doc", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument97);

当我尝试使用wdFormatDocument或wdFormatDocumentDefault时出现了同样的错误

编辑:这是对代码的更新,它会转换它,但是一旦它再次出现,你就会得到错误!!

var wordApp = new Microsoft.Office.Interop.Word.Application();
var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf");
currentDoc.SaveAs(@"C:\TestDocument", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocumentDefault);
currentDoc.Close();
wordApp.Quit();

答案 1 :(得分:2)

您能否显示要拨打SaveAs的代码?我很好奇你指的Word.WdSaveFormat。听起来它正在保存rtf数据,但将扩展名更改为.docx。

答案 2 :(得分:0)

以下是执行转换的代码。代码几乎与上面显示的相同,但有一些小的(但很重要的)差异 - 必须使用引用(而不是对象本身):

Microsoft.Office.Interop.Word.Application _App = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document _Doc =  _App.Documents.Open("c:/xxx.rtf");

object _DocxFileName = "C:/xxx.docx";
Object FileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXMLDocument;

_Doc.SaveAs2(ref _DocxFileName, ref FileFormat);