引用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
null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML });
// 退出 Word
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,
null, word, null);