2016-01-25 4 views
1
Microsoft.Office.Interop.Word._Document mDocument = new Microsoft.Office.Interop.Word.Document(); 

*//This function will convert .doc to .docx 
    Public Function FileSave(ByVal fileName As String, ByVal openPWD As String, ByVal savePWD As String)  
       mDocument.SaveAs2(fileName, WdSaveFormat.wdFormatXMLDocument, , openPWD, , savePWD)    
       End Function* 

Выше функция записала для преобразования .doc-файла в .docx с использованием word interop. файл создается успешно, но при открытии содержимого файла отсутствует.Преобразование .doc в .docx в C#/vb.net

ли что-то отсутствует или есть альтернативный метод для преобразования .doc .docx в C# или VB.NET

+0

'Microsoft .Office.Interop.Word._Document mDocument = new Microsoft.Office.Interop.Word.Document(); 'эта строка создает новый новый документ, который пуст по мере его создания. Вам нужно открыть свой собственный файл. – mcy

ответ

2

Вы, кажется, создать новый документ Word, в памяти, а затем сохранить, что в .DOCX который поэтому выходной файл пуст.

// This line just creates a brand new empty document 
Microsoft.Office.Interop.Word._Document mDocument = new Microsoft.Office.Interop.Word.Document(); 

Сначала необходимо открыть существующий документ, а затем Сохранить как желаемый тип файла.

Что-то вроде этого (не проверял это сам, как не на машине с Interop)

Microsoft.Office.Interop.Word._Document mDocument = wordApp.Documents.Open(sourcepath); 
mDocument.SaveAs(outputpath, WdSaveFormat.wdFormatXMLDocument); 

По просьбе Ops, как получить экземпляр Слова

// Create Word object 
Word._Application wordApp = null; 

// Try and get an existing instance 
try 
{ 
    wordApp = (Word._Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"); 
} 
catch { /* Ignore error */ } 

// Check if we got an instance, if not then create one 
if (wordApp == null) 
{ 
    wordApp = new Microsoft.Office.Interop.Word.Application(); 
} 

//Now you can use wordApp 
... wordApp.Documents.Open(...); 
+0

где задан объект wordApp – John

+0

Извините, предполагается, что у вас его есть. Я добавил код, чтобы получить экземпляр Word. – Equalsk

+0

@NKD Собственно, правильная команда для создания NEW-документа в приложении Word: wordApp.Documents.ADD(). Ключевое слово NEW не поддерживается Word в том виде, в котором разработчик .NET ожидает и должен использоваться только для Word.Application. Для всех объектов, запущенных в приложении, используйте метод ADD. –

 Смежные вопросы

  • Нет связанных вопросов^_^