Вызов Word для преобразования rtf в docx
Мне нужно регулярно программно конвертировать *.rtf в *.файлы DOCX. Вручную это отлично работает с сохранением как внутри Word 2007 ... результирующий docx ведет себя просто отлично. Программно, я не могу заставить его работать.
то, что я пробовал, в основном следующее:
... но в обратном направлении. Вместо открытия *.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);