引用Word的Com组件Microsoft Word 11.0 Object Library,我的office2003的版本是8.3,默认安装的Office是没有这个组件的。用office盘,添加删除组件,选自定义,在Microsoft Office Word下面有.NET可编程性支持。安装。
引用到项目中Web.config多了这行
<compilation debug="false"> <assemblies> <add assembly="Microsoft.Office.Interop.Word, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"/></assemblies>
程序代码: Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.ApplicationClass(); //Word.ApplicationClass word = new Word.ApplicationClass(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents;
// 打开文件 Type docsType = docs.GetType(); object fileName = "e://cc.doc"; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, (object)docs, new Object[] { fileName, true, true });
// 转换格式,另存为 Type docType = doc.GetType(); object saveFileName = "e://aaa.html"; //下面是Microsoft Word 9(11.0) Object Library的写法,如果是10(没试过),可能写成: /* docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML}); */ ///其它格式: ///wdFormatHTML ///wdFormatDocument ///wdFormatDOSText ///wdFormatDOSTextLineBreaks ///wdFormatEncodedText ///wdFormatRTF ///wdFormatTemplate ///wdFormatText ///wdFormatTextLineBreaks ///wdFormatUnicodeText docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML });
// 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);