操作WORD配置說明
引入:Word的對象庫文件“MSWORD.OLB”(word 2000為MSWORD9.OLB)
1.運行Dcomcnfg.exe
2.組件服務――計算機――我的電腦――DCOM配置――找到microsoft word 文檔
3.點擊屬性
4.選擇“安全性”
5.選定“使用自定義訪問權限”和“使用自定義啟動權限”
6.分別編輯權限,添加Everyone(ASPNET,VS Developers,Debugger User)
7.選擇“身份標識”,在選定“交互式用戶” 即可
8.在
Web.config里加 identity impersonate="true"/
C#:
ASP.NET操作Word文檔一直是一個大家比較關心的話題,其實在ASP.NET里操作Word文檔一點也不難,大家只需按本文提示,就能輕輕松松操作Word文檔!
首先請確認服務端已經安裝了Office Word(以下將以Office XP為例),
操作系統為win2000或XP,并且已配置好.NET的運行環境及安裝VS.NET C#開發環境后,我們就可以打開VS.NET,并新建一個Visual C#項目ASP.NET Web應用程序,位置為“”。(如圖一)
二、引用Word對象庫文件
要操作Word,我們就需要Word的對象庫文件“MSWORD.OLB”(word 2000為MSWORD9.OLB),通常安裝了Office Word后,你就可以在office安裝目錄的Office10文件夾下面找到這個文件,當我們將這個文件引入到項目后,我們就可以在源碼中使用各種操作函數來操作Word。具體做法是打開菜單欄中的項目添加引用瀏覽,在打開的“選擇組件”對話框中找到MSWORD.OLB后按確定即可引入此對象庫文件,vs.net將會自動將庫文件轉化為DLL組件,這樣我們只要在源碼中創建該組件對象即可達到操作Word的目的!
三、Webform1.aspx.cs代碼
完成添加引用后,MSWORD.OLB已經轉化為相關DLL文件并放置于項目的BIN目錄下了,這樣我們只需在源碼中創建該對象,并使用word庫文件內置的操作函數即可輕松實現操作Word,Webform1.aspx.cs源碼請參見
五、web.config設置
web.config文件還需添加一句 identity impersonate="true"/以啟用模擬身份,因為默認ASPNET這個用戶是沒有權限訪問Word.ApplicationClass(),當啟用模擬身份后所有頁面將會使用匿名Internet用戶帳戶(IUSR_machinename)這個用戶名的權限執行,這樣我們就能成功訪問Word.ApplicationClass()并在ASP.NET中操作Word!
//傳文檔所在路徑 返回文檔內容 public string Doc2Text(string docFileName) { //實例化COM Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object fileobj = docFileName; object nullobj = System.Reflection.Missing.Value; //打開指定文件(不同版本的COM參數個數有差異,一般而言除第一個外都用nullobj就行了) Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj ); //取得doc文件中的文本 string outText = doc.Content.Text; //關閉文件 doc.Close(ref nullobj, ref nullobj, ref nullobj); //關閉COM wordApp.Quit(ref nullobj, ref nullobj, ref nullobj); //返回 return outText; } |
當然 在讀取的時候會有損壞的文件 和被加密的文件等問題 總之C#和office的兼容性不太好
別忘了要引用word的dll
引用文件夾 右鍵添加引用 在組件里找Microsoft.Office.Interop.Word