飘飘悠悠 发表于 2015-1-16 23:17:49

ASP教程之用COM和ASP创立静态Word文档(转)

只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天word|创立|静态  年夜多半公司因为意想到无文档的事情历程会成为行进的绊脚石,因而都开辟了界说具体的文档程序。每一个公司都为分歧的历程界说本人的一套文档模板,使它们随时可被人员利用,用于举行购置哀求或请求度假等。
  可是,跟着Internet渐渐为人人熟习和渐渐提高,愈来愈多的功效被移植到“开放空间”,以完成更好的可视性和更无效的通信。好比说,一团体大概要问:“我能够登录到Internet/Intranet,填写一张休假请求表,然后以公司尺度模板款式将它作为Word文档发送给我的司理吗?”谜底是一定的,上面会为你演示怎样完成。

关于这个使用程序
  我们的使用程序有一个样本表格,由会见web站点的用户填写。一旦提交,ASP文件搜集个中信息,利用web服务器上寄存的事后界说的模板,以其内容创立一个Word文档。然后显现一个链接,同意用户检察大概下载这个文档。

  我们创立一个VisualBasicCOM组件(ActiveXDLL),经由过程ASP使用程序挪用它,给它传送需要的参数。组件从实质上是利用MicrosoftWord工具库,创立一个对将要传送参数的Word文档的援用。一切这些都是在服务器上完成的,由于这类办法有很多上风。

  个中最主要的是在程序内运转的since.dll(与收集服务器在一样的内存中),它们比程序外运转的(如CGI或Perl剧本)运转更快,利用的资本更少,后者在运转中每次被挪用时,都将创立本人自己的实例(如复制)作为独自的程序,因而要用失落大批的服务器内存。这还意味着为了使程序外组件在服务器上运转(关头字:ASPAllowOutOfProcComponents),你不必要修正Metabase(一个存储Internet信息服务器设置设置的布局,与Windows注册不异,可是利用较少的磁盘空间)。

  另外一方面,这类办法最分明的弱点大概是由于它与收集服务器在一样的内存空间中运转,任何DLL的成绩都有大概使服务器出妨碍。因而,在开辟和实行程序内使用程序时必要非常当心。

程序请求和长处

完本钱文所说的功效,必要具有以下前提:
●VisualBasic5或6
●具有IIS4的NT服务器或事情站,大概有PWS的任何Windows9.x
●MSWord97(Office97套装的一部分)

  本例还能够和MSWord2000一同实行,可是会有一些成绩,在文章最初要提到。别的分外的软件是不用要的,只必要包管默许站点http://localhost/是无效的(点击这个超链接会把你带到团体的web服务器或WindowsNT的主页)。
  我们将把创立的一切文档都存储在C:Inetpubscriptsdocuments文件夹中,以是一旦文档被创立以后,我们供应到它的链接是很简单的(能够依据必要修正)。必定要创立这个路径,不然我们的例子就不克不及事情。一切别的的文件都位于我们的剧本路径(C:Inetpubscripts)。我们的dll将尽量地天真,使任何模板的修正都只必要起码的代码修正。

更深一层的手艺

  要计划的模板能够基于一个公司但愿在他们的文档呈现的内容:登录、得当的页眉和页脚信息、基础文本等等。别的文档创立以后,我们但愿在个中看到用户特别信息的中央还要到场标志(这就使这个使用程序是静态的)。在我们回忆代码时还会细心看这些部分。我们的.dll将包括一个称为GenerateDocument的函数(在类文件外部),它请求向它传送4个参数,分离是:
●一个为一切标志用的分界字符串(来自文本模板)
●一个为一切响应值用的分界字符串(来自web扫瞄器上用户添补的表格)
●模板在服务器上的地位
●天生的文档在服务器上被存储的地位

如今我们能够往下举行了。

组合在一同
文档模板
  起首创立一个word模板的样本,假定它就是我们公司的尺度文档模板。我们要为这个例子猎取人员的信息,我们但愿文档中包括以下的特定信息:名字、地点、EmailId。如今基于这些信息创立模板,必定要在文档中将要显现用户信息的中央包括得当的标志(如.<Name>,<Address>)。

  将文件定名为EmployeeTemplate.dot(记着,在SaveAs对话框的文件范例列表当选择文档模板,并将其存进C:InetpubScriptsTemplates。看看可下载质料部分包括的文档模板样本,以便对它有个更好的了解。


COM组件
  如今用VisualBasic创立COM组件,依照以下的步骤:
●启动VisualBasic,选择ActiveXDLL作为工程文件范例。
●将类名改成DocumentObject,工程文件名改成MyDocumen(这是我们在ASP页中创立COM组件的一个例示时要利用的信息)
●接着,点击工程文件菜单选项,到References。
●向下转动直到瞥见"MicrosoftWordn.0ObjectLibrary"(n是一个辨认服务器上安装的word工具库版本的数字).选中这个选项,点击clickOK。

  请参阅本文开头处可下载文件中的类模块代码。GenerateDocument()函数要用到从ASP文件向它传送的4个参数。
它前往一个字符串范例,在前面能够看到:
OptionExplicit
DeclareaNewwordapplicationObject
DimwdAppAsNewWord.Application
PublicFunctionGenerateDocument(sTags,sValues,sSourcePath,sDestPath)_
AsString
OnErrorGoToErrHandler
DimarrTags()AsString,arrValues()AsString,iLoopAsInteger

  此函数实行的第一个义务是从指定的源路径(作为参数从ASP文件传送过去)翻开模板文件。基于在服务器上创立的模板,援用一个新的Word文档:
wdApp.Documents.OpensSourcePath

  然后,将从HTML表单中猎取的一切标志,用Split函数放进arrTags数列中。逗号是一个分界符,在ASP文件平分离隔标志的值:
arrTags=Split(sTags,",")

  我们将响应的用户输出值存进arrValues数列。pipe字符(|)是分界符,来分开开这些值:arrValues=Split(sValues,"|")代码在arrTags中轮回,用查找和取代操纵(用使用程序剧本的VisualBasic)从标志数列中找到标志,在创立的Word文档中,用arrValues数列中的响应值取代它们:

ForiLoop=0ToUBound(arrTags)wdApp.ActiveDocument.Content.Find.ExecutearrTags(iLoop),,True,,_
,,,,,arrValues(iLoop),2
NextiLoop

  你看到的一串逗号是Find-Execute办法的分歧属性,我们没有设置。我们只对MatchWholeWord,ReplaceWith和ReplaceAll(用数字常量2代表)的设置选择感乐趣。然后,我们将文档存进指定的目标路径和文件名中,加入和开释之前封闭这个word文档工具:

wdApp.ActiveDocument.SaveAssDestPath
wdApp.ActiveDocument.Close
wdApp.Quit
SetwdApp=Nothing
加入函数之前,前往一个Success标记:
GenerateDocument="Success"
ExitFunction
这是一个毛病处置程序。假如在下面的使用程序实行中碰到毛病的话,它前往一个毛病信息。
ErrHandler:
Quitandreleasetheworddocumentobject
wdApp.Quit
SetwdApp=Nothing
BuildtheErrorMessage,andpassitback
DimErrMsgAsString
ErrMsg="ErrorNumber:"&Err.Number&"<BR><BR>"
ErrMsg=ErrMsg&"ErrorSource:"&Err.Source&"<BR><BR>"
ErrMsg=ErrMsg&"ErrorDescription:"&Err.Description&"<BR><BR>"
GenerateDocument=ErrMsg
ExitFunction
EndFunction
PrivateSubClass_Terminate()
Releasethereference
SetwdApp=Nothing
EndSub

  在VisualBasic中,保留使用程序(保存类和工程文件名),编译,看是不是发生了甚么毛病。然后,翻开File菜单,点击MakeMyDocument.dll。保存它的名字,在工程文件地点的文件夹中保留它。

  然后,在web服务器上注册dll,以下:●将MyDocument.dll复制到windowssystem或winntsystem32路径(取决于利用的操纵体系).
●在命令提醒符下实行以下命令C:winnts</p>对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。

爱飞 发表于 2015-1-18 09:17:49

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

飘飘悠悠 发表于 2015-1-19 18:00:34

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

小妖女 发表于 2015-1-24 15:18:10

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

柔情似水 发表于 2015-1-26 19:17:20

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

因胸联盟 发表于 2015-1-27 06:28:50

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

变相怪杰 发表于 2015-2-3 12:58:43

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

小女巫 发表于 2015-2-9 01:40:27

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

灵魂腐蚀 发表于 2015-3-8 16:26:44

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

再见西城 发表于 2015-3-16 05:06:21

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

海妖 发表于 2015-3-22 20:11:40

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
页: [1]
查看完整版本: ASP教程之用COM和ASP创立静态Word文档(转)