Вызов Word для преобразования rtf в docx

Мне нужно регулярно программно конвертировать *.rtf в *.файлы DOCX. Вручную это отлично работает с сохранением как внутри Word 2007 ... результирующий docx ведет себя просто отлично. Программно, я не могу заставить его работать.

то, что я пробовал, в основном следующее:

получить RTF из Word

... но в обратном направлении. Вместо открытия *.docx и использование SaveAs для *.rtf, я открываю *.rtf и использование SaveAs для *.файлы DOCX. Однако полученный файл не открывается, и поэтому, очевидно, есть что-то, чего я не понимаю. Is

wordApp.Documents.Open(@"D:Barfoo.rtf")

не законная вещь, чтобы сделать?

любые мысли о том, как это сделать буду признателен.

3 ответов


Вы можете попробовать этот код, он работает для меня

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

EDIT: это обновление кода, он преобразует его, но u получит ошибку один раз, а затем он никогда не появлялся снова!!

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

можете ли вы показать код, где вы вызываете SaveAs? Мне любопытно, который Word.WdSaveFormat вы указываете. Похоже, что он сохраняет данные rtf ,но меняет расширение на.файлы DOCX.


вот код, который выполняет преобразование. Код почти такой же, как показано выше, с небольшим (но важным) отличием - необходимо использовать ссылки (не сами объекты):

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