
 
 | 
| 技术资料  > ASP技术 > ASP技巧 : 使用ASP和Word进行服务器端拼写检查 |  
使用ASP和Word进行服务器端拼写检查 March 25,2004 |  
本文讨论的问题与下列方面相关:  
 
Microsoft Word 97 for Windows  
 
Microsoft Visual InterDev, version 6.0  
 
Microsoft Internet Information Server version 4.0  
 
 
 
概要  
本文描述了如何使用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 ItemHTML页面”,命名为“CheckSpelling”, 
然后点击Open。  
 
5、添加的HTML页面默认状态下以设计视图打开。在页面上拖出一个HTML文本区域,放置一个HTML提交按钮,根据你的爱好 
进行布局,在页面上输入一些文字,告诉用户在文本域中输入需要进行拼写检查的文字。  
 
6、选择页面上的所有对象(CTRL+A),然后从Visual InterDev的 HTML菜单中选择Form,将对象包裹在表单中。  
 
7、点击当前窗口底部的源码功能页面,切换到源码显示视图。修改HTML开放< FORM >标记的action属性值为 
results.asp。  
 
8、打开Project菜单,选择“添加Web ItemActive 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  
 
11、最后,在工程浏览窗口中用鼠标右键单击CheckSpelling.htm文件,选择“设置为初始页面”。  
 
12、从File菜单中选择“保存所有”(CTRL+SHIFT+S),再从Build菜单中选择“Build”(Control-Shift+B)。  
 
现在可以进行测试了,在客户端输入“http:///WebSpell/CheckSpelling.htm”。  
 
在Web页面的文本域中输入一些文字,点击“Submit”,然后就可以看到results.asp对你输入的文字报告一些错误拼写和 
建议。  
 
工程的工作流程  
当用户首次浏览到CheckSpelling.htm页面时,Application_OnStart()事件被触发。这个过程启动Microsoft Word,为拼 
写检查做准备,保存应用和文档对象到2个ASP应用程序级别的变量中。这使页面变得很有效率,因为你可以再次调用Word 
的同一实例,而不是为每一次拼写检查要求都执行多次实例。接着,当用户点击按钮Submit时,result.asp页面通过ASP的 
Request对象获取输入值,然后利用存储的Microsoft Word对象来执行拼写检查。result.asp注意了当多个用户会话同时使 
用同一实例时可能发生的问题,如果一个用户正在使用,就进行调度处理。  
 
注意:一旦一个Web用户登录了工程文件,Web服务器就会有一个WinWord.exe进程在后台运行,它将处理拼写检查的请求。 
当应用程序发生OnEnd()事件时,ASP应用程序才会释放这个实例,而OnEnd()事件只有当Web服务停止时才被触发。可 
以通过运行下列的命令来停止并重新启动Web服务:  
 
net stop w3svc  
 
net start w3svc  
         |  
 
 | 
  
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved