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