Вызов Word для преобразования RTF в DOCX - PullRequest
6 голосов
/ 05 февраля 2011

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

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

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

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

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

не разрешено делать?

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

Ответы [ 3 ]

4 голосов
/ 05 февраля 2011

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

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: это обновление кода, он конвертирует его, но вы получите ошибку один раз, и она больше не появится !!

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();
2 голосов
/ 05 февраля 2011

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

0 голосов
/ 09 декабря 2014

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

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