Asp.net读取Word的实例与总结
摘 要:本文通过一个实用例子完整演示了如何使用C#在ASP.NET里调用Word、自动化Word,并且总结了实际应用中发现的问题,最后提出了有效的解决方案。 
关键词:ASP.NET; C#; Word; 自动化; VBA; COM; 死进程; 
本文描述了如何使用Microsoft Word在Web页面ASP文件中添加拼写检查功能。 
详细的步骤 
按照下列步骤建立ASP应用程序: 
1、在Web服务器所在机器上,启动Microsoft Visual Interdev 6.0,选择File/New Project。 
2、在“新工程”对话框的名字编辑域中,输入“WebSpell”,然后双击新Web工程图标。 
3、在接着出现的Web工程向导对话框中,输入或者选择你的Web服务器名字。将工作模式默认为Master,点击Next,再点击“finish”。 
4、在Visual InterDev创建工程完成后,打开工程菜单,选择“添加Web Item/HTML页面”,命名为“CheckSpelling”,然后点击Open。 
5、添加的HTML页面默认状态下以设计视图打开。在页面上拖出一个HTML文本区域,放置一个HTML提交按钮,根据你的爱好进行布局,在页面上输入一些文字,告诉用户在文本域中输入需要进行拼写检查的文字。 
6、选择页面上的所有对象(CTRL+A),然后从Visual InterDev的 HTML菜单中选择Form,将对象包裹在表单中。 
7、点击当前窗口底部的源码功能页面,切换到源码显示视图。修改HTML开放< FORM >标记的action属性值为results.asp。 
8、打开Project菜单,选择“添加Web Item/Active Server Page”,命名为“results”,然后点击“Open”。 
9、对于新页面,切换到源码视图,在<BODY>标记之间输入下面的代码: 
<!-- Page header --> 
<p><center><font size=+4 color=red>Spelling Results</font></center><hr> 
<!-- Show user the text they entered --> 
<p>The text you entered was:<p> 
<font color=blue><%=Request("TEXTAREA1")%></font><p><hr><p> 
<!-- Begin server-side script to check spelling errors --> 
<% 
' Don't allow other sessions to re-enter :) 
do while(Application("WordInUse") = 1) 
loop 
Application("WordInUse") = 1 
' Get Word references created in global.asa. 
dim wdApp 
set wdApp = Application("WordApp") 
dim wdDoc 
set wdDoc = Application("WordDoc") 
' Clear current contents. 
dim wdRange 
set wdRange = wdApp.Selection.Range 
wdRange.WholeStory 
wdRange.Delete 
set wdRange = Nothing 
' Add the text the web user entered. 
dim txt 
txt = Request("TEXTAREA1") 
wdApp.Selection.TypeText CStr(txt) 
' Check spelling without prompting. 
'wdDoc.CheckSpelling , , 0 
' Get spelling errors collection. 
dim wdErrors 
set wdErrors = wdDoc.SpellingErrors 
%> 
<% ' Handle no-error condition. 
if wdErrors.Count = 0 then 
%> 
There were no spelling errors. 
<% 
' Otherwise build a table of suggestions. 
else 
%> 
<!-- Build a table to show errors & suggestions --> 
<font color=red>There were <%=wdErrors.Count%> spelling error(s).</font><p> 
<TABLE border=1 cellPadding=1 cellSpacing=1 width=75%> 
<TR> 
<TD><b><font size=+1>Word</font></b></TD> 
<TD><b><font size=+1>Suggestions</font></b></TD></TR> 
<% 
for each wdError in wdErrors 
' Write the word in question. 
Response.Write("<TR><TD>") 
Response.Write(wdError.Text) 
Response.Write("</TD><TD>") 
' Get spelling suggestions for it. 
dim wdSuggestions 
set wdSuggestions = wdApp.GetSpellingSuggestions(wdError.Text) 
if wdSuggestions.Count <> 0 then 
' a comma-separated list of suggestions. 
dim strSuggestions 
strSuggestions = ", " 
for each wdSuggestion in wdSuggestions 
strSuggestions = strSuggestions & wdSuggestion.Name & ", " 
next 
' Remove extra comma & space. 
strSuggestions = Right(strSuggestions, len(strSuggestions)-2) 
' Write out suggestions. 
Response.Write(strSuggestions) 
else 
Response.Write("None.") 
end if 
set wdSuggestions = Nothing 
Response.Write("</TD></TR>") 
next 
end if 
' Release references. 
set wdErrors = nothing 
set wdDoc = nothing 
set wdApp = nothing 
' We're done, allow other sessions to continue. 
Application("WordInUse") = 0 
%> 
10、在Visual InterDev 工程浏览窗口中,双击Global.asa文件,在< SCRIPT >标记之间添加下面2段子程序: 
Sub Application_OnStart() 
' Launch Word. 
dim wdApp 
set wdApp = CreateObject("Word.Application") 
set Application("WordApp") = wdApp 
' Add a document. 
set Application("WordDoc") = wdApp.Documents.Add 
' Release reference. 
set wdApp = nothing 
End Sub 
Sub Application_OnEnd() 
' Get Automation references. 
dim wdApp 
set wdApp = Application("WordApp") 
dim wdDoc 
set wdDoc = Application("WordDoc") 
' Tell Word to shutdown. 
wdDoc.Saved = true 
wdApp.Quit 
' Release references. 
set Application("WordDoc") = Nothing 
set Application("WordApp") = Nothing 
set wdDoc = nothing 
set wdApp = nothing 
End Sub