我需要定期以编程方式将* .rtf文件转换为* .docx。手动,这可以正常使用Word 2007中的另存为...得到的docx表现得很好。以编程方式,我无法让它工作。
我尝试的基本上如下:
......但反方向。我打开* .rtf并使用SaveAs到* .docx,而不是打开* .docx并使用SaveAs到* .rtf。但是,生成的文件不会打开,显然有些东西我不明白。是
wordApp.Documents.Open(@"D:\Bar\foo.rtf")
不是合法的事情吗?
对于如何做到这一点的任何想法将不胜感激。
答案 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);