在c#/ vb.net中将.doc转换为.docx

时间:2016-01-25 10:11:33

标签: c# ms-word office-interop vb.net-2010

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*

上面的函数已编写为使用word interop将.doc文件转换为.docx。 文件是成功创建的,但打开时文件内容丢失。

是否遗漏了某些内容,或者是否有其他方法可以将.doc转换为c#或Vb.net中的.docx

1 个答案:

答案 0 :(得分: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);

在OP请求时,如何获取Word的实例

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