|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。asp.net|microsoft|word 本文是应在ASP.NET里创立MicrosoftWord文档之需而写的。这篇文章演示了在ASP.NET里怎样创立和修正MicrosoftWord文档。
[背景]
主动化是一种能让各类言语编写的(如:VisualBasic.NET或C#)使用程序在程序级别上把持其他使用程序。
关于Word的主动化同意你实行诸如创立新的文档,向文档里增加文本,邮件兼并和格局化文档这些操纵。在Word和其他的MicrosoftOffice程序里,那些经由过程用户接口举行的可视化操纵也能够经由过程程序级其余主动化来完成。
Word经由过程工具模子把这个程序可操纵的功效向外供应了利用接口。
工具模子是一组类和办法的汇合,这些类和办法与Word的逻辑组件组成对应。比方,他多是使用程序工具,文档工具,段落工具,每个工具都包括了Word组件的功效。
[创建工程]
在.NET里操纵Word的第一步就是增加COM援用到你的工程里,经由过程右键点击SolutionExplorer的Reference,AddReference。选择COM选项卡,查找MicrosoftWord10.0ObjectLibrary。点击选择,OK。
这将把封装有Word的COM的程序集主动的增加到使用程序目次里。
如今,你能够创建一个Word的实例了:
Word.ApplicationClassoWordApp=newWord.ApplicationClass();
你能够挪用Word供应给你的办法和属性来利用Word文档。
进修怎样利用Word,Excel,Powerpoint的工具模子最好的路子就是利用在这些Office使用里利用MacroRecorder:
1.在Tools菜单的Macro选项里选择RecordNewMacro,而且实行你有乐趣的义务。
2.在Tools菜单的Macro选项里选择StopRecording。
3.假如你举行了记录,选择Tools菜单的Macro选项里的Macros,找到你纪录的宏,你能够编纂它。
下面的操纵发生了VBA代码来完成你纪录的义务。必要注重的是,宏在年夜多半情形下不是最好的代码,可是它供应了一种便利和可用的办法。
上面例子翻开并增加一写笔墨:
objectfileName="c:database est.doc";
objectreadOnly=false;
objectisVisible=true;
objectmissing=System.Reflection.Missing.Value;
Word.ApplicationClassoWordApp=newWord.ApplicationClass();
Word.DocumentoWordDoc=oWordApp.Documents.Open(reffileName,refmissing,refreadOnly,
refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,
refmissing,refmissing,refisVisible,refmissing,refmissing,refmissing);
oWordDoc.Activate();
oWordApp.Selection.TypeText("Thisisthetext");
oWordApp.Selection.TypeParagraph();
oWordDoc.Save();
oWordApp.Application.Quit(refmissing,refmissing,refmissing);
假如创立一个新文档并保留是如许写的:
Word.ApplicationClassoWordApp=newWord.ApplicationClass();
Word.DocumentoWordDoc=oWordApp.Documents.Add(refmissing,refmissing,refmissing,refmissing);
oWordDoc.Activate();
oWordApp.Selection.TypeText("Thisisthetext");
oWordApp.Selection.TypeParagraph();
oWordDoc.SaveAs("c:myfile.doc");
oWordApp.Application.Quit(refmissing,refmissing,refmissing);
在C#里,Word文档类的翻开办法是如许界说的:Open(refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject,refobject)。在C#里的翻开办法必要15个参数,而且每一个参数必需被ref关头字所形貌,并且是object范例。
第一个参数是文件,名,在VisualBasic.NET里一般是一个String,可是在在C#里,它必需是一个包括有String的object,代码是如许的:
objectfileName="c:database est.doc";
固然我们仅必要利用Open办法的第一个参数,可是C#不同意利用默许参数,以是我们付与它14个object范例的值:System.Reflection.Missing.Value
[利用模版]
假如你必要主动的创建有通用格局的文档,那你可使用基于预格局化的摸版来创建新文档,如许能够便利良多。
在Word里利用摸版而不是创建空文档有两个分明的长处:
1.你能够更年夜水平的格局化文档和把持文档里的工具。
2.能够用较少的代码创建文档。
经由过程利用摸版,你能够调剂表格、段落和其他一些在文档里的工具的地位,同时包含格局化这些工具。经由过程利用主动化处置,你能够创建一个基于摸版的文档,代码以下:
Word.ApplicationClassoWordApp=newWord.ApplicationClass();
objectoTemplate="c:MyTemplate.dot";
oWordDoc=oWordApp.Documents.Add(refoTemplate,refMissing,refMissing,refMissing);
在你利用的摸版里,你能够界说一些暗号,主动化处置将向这些地位添补文本,以下:
objectoBookMark="MyBookmark";
oWordDoc.Bookmarks.Item(refoBookMark).Range.Text="SomeTextHere";
利用摸版的另外一个长处是你能够创立和保留那些在运转过程当中你想要的格局化款式,以下:
objectoStyleName="MyStyle";
oWordDoc.Bookmarks.Item(refoBookMark).Range.set_Style(refoStyleName);
[利用CCWordApp类]
在工程中包括了CCWordApp.cs这个文件,我不想老是在写象拔出文本,翻开文档如许的代码。
以是,我决意把一些最主要的功效封装到CCWordApp类里往。
上面代码扼要形貌了这个类和他的功效:
publicclassCCWordApp
{
//itsareferencetotheCOMobjectofMicrosoftWordApplication
privateWord.ApplicationClassoWordApplic;
//itsareferencetothedocumentinuse
privateWord.DocumentoWordDoc;
//ActivatetheinterfacewiththeCOMobjectofMicrosoftWord
publicCCWordApp();
//Openanexistingfileoropenanewfilebasedonatemplate
publicvoidOpen(stringstrFileName);
//Openanewdocument
publicvoidOpen();
//DeactivatetheinterfacewiththeCOMobjectofMicrosoftWord
publicvoidQuit();
//Savethedocument
publicvoidSave();
//SavethedocumentwithanewnameasHTMLdocument
publicvoidSaveAs(stringstrFileName);
//SavethedocumentinHTMLformat
publicvoidSaveAsHtml(stringstrFileName);
//InsertText
publicvoidInsertText(stringstrText);
//InsertLineBreak
publicvoidInsertLineBreak();
//InsertmultipleLineBreak
publicvoidInsertLineBreak(intnline);
//Settheparagraphalignment
//PossiblevaluesofstrType:"Centre","Right","Left","Justify"
publicvoidSetAlignment(stringstrType);
//Setthefontstyle
//PossiblevaluesofstrType:"Bold","Italic,"Underlined"
publicvoidSetFont(stringstrType);
//Disableallthestyle
publicvoidSetFont();
//Setthefontname
publicvoidSetFontName(stringstrType);
//Setthefontdimension
publicvoidSetFontSize(intnSize);
//Insertapagebreak
publicvoidInsertPagebreak();
//Gotoapredefinedbookmark
publicvoidGotoBookMark(stringstrBookMarkName);
//Gototheendofdocument
publicvoidGoToTheEnd();
//Gotothebeginningofdocument
publicvoidGoToTheBeginning();
翻开一个存在的文件的代码将是如许的:
CCWordApptest;
test=newCCWordApp();
test.Open("c:database est.doc");
test.InsertText("Thisisthetext");
test.InsertLineBreak;
test.Save();
test.Quit();
[细节]
演示工程包括:
CCWordApp.cs-下面利用的类
CreateDocModel.aspx-创建基于利用书签的摸版的新文档的例子。
CreateNewDoc.aspx-创建新文档,并向个中增加一写文本。
ModifyDocument.aspx-翻开一个存在的文档,并在开端追加一些文本。
template emplate1.dot-摸版的例子(在CreateDocModel.aspx中利用到)
注重你用来保留文档的目次,应当是可重写的。
能够在Web.config里修正这个路径。
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。 |
|