lotus script 操纵word文档
- 格式:doc
- 大小:21.00 KB
- 文档页数:2
Lotus Notes电子论坛模块的实现1 开发工具Lotus Notes简介Lotus Notes 是Lotus(莲花)公司的旗舰产品,自1989年问世以来,它便以优越的性能赢得了用户,也逐渐为中国用户所熟识。
在Lotus归于IBM旗下后,历经3年时间研制开发了功能更加强大的革命性产品Notes 6/Domino 6。
Domino服务器是应用和电子邮件服务器,它提供了连接客户机、传递邮件、控制数据库在用户中的共享等实现各种功能的集成服务,服务器上还可存储用户邮箱和各种可被用户共享的数据库。
Notes客户机则主要提供接口、良好的图形用户界面、信息处理等功能,同时用户也可以在客户机中以数据库的形式存储个人信息。
2 开发环境2.1 Lotus Domino/Notes(OA)硬件环境信息传输设备:电话、传真机、计算机局域网、广域网等。
信息处理设备:各种个人计算机、工作站或服务器等。
信息存储设备:如硬盘、U盘、光盘存储系统等。
2.2 Lotus Domino/Notes(OA)软件环境本系统是基于Lotus Notes(Domino)开发的流程事务类管理系统,系统的服务器端环境为Lotus Notes(Domino)服务器,客户端环境是IE 浏览器(B/S结构)。
系统具有良好的跨平台特性,采用了Lotus Notes、Java等编程技术,系统可以在很多流行的平台上运行(Linux/Unix/Windows/OS2等),特别适合于企事业单位内部网络。
由此可见,客户端环境采用IE浏览器(B/S结构)大大降低了系统运行的要求。
比较适合中小企业应用,为企业节省了不少开支。
而且为日后维护、升级打下了良好的基础。
3 功能模块初步考虑设计本电子论坛所需要的设计元素有:表单、视图、文件夹、导航器。
其中导航器为进入本论坛的起始页面,其中设有4个热点矩阵分别链接到不同的视图,让有不同需要的用户可以按热点矩阵名称进入自己所需要的页面。
⽤javascript操作word⽂档1、向word中写⼊内容⾸先在word中设置书签,如书签名为bookmark,javascript中可以这样写var word;word = new ActiveXObject("Word.Application");var range = word.Range;word.Visible = true;var path = "filepath";word.Documents.Open(path);range = word.ActiveDocument.Bookmarks("bookmark").Range;range.InsertBefore("哈哈哈哈哈哈"); //书签后插⼊内容//-----以下代码段附加保护及取消保护⽂档功能----//保护⽂档,书签处可编辑range.select();//选定书签内容var psw='123'word.ActiveDocument.BookMarks("bookmark").Range.Editors.Add(-1); //常量:wdEditorEveryone=-1word.ActiveDocument.Protect(3,false,psw,false,false);//常量:wdAllowOnlyReading=3//取消保护⽂档word.ActiveDocument.Unprotect(psw);//-----------------------end--------------2、把word⽂件转成html⽂件<script language=javascript>function saveword(){var oWordApp=new ActiveXObject("Word.Application");var oDocument=oWordApp.Documents.Open("C:\\doc2html\ .doc");oDocument.SaveAs("C:\\test.htm", 8)oWordApp.Quit();}</script></HEAD><BODY>Click the "save" button to save the file "C:\test.doc" to "C:\test.htm":<input type=button onclick="saveword()" value=save></BODY></HTML>。
易语言中操作word的技巧一、前言。
易语言是一个很好的编程语言,尽管现在还有一些不足之处。
但由于学习与使用易语言的人越来越多,易语言一定会越来越强大的。
那些看不起易语言,认为只能学C或VB的人,未免太过片面了。
最近,总有人问我,用易语言向WORD的表格里输入数据的问题,我也看了一下网上关于这个问题的回答,要么过于专业,让人看不懂,要么可操作性不强。
我也懒得一个一个的解答,所以将代码在这里写出来告诉大家,大家对照使用就可以。
二、易语言向WORD表格填写数据的简单步骤。
操作之前,你的电脑里要安装易语言与Offcie,真是废话!为什么要废话一下呢?因为有的人用的是精简版的Offic,可能会造成调用Offcie 出错。
建议你用原版来安装。
本文的代码在易语言5.11版与office2003(offic2010)中均能实现。
想来在Office 2000及以上的版本也应该可以。
第一步,在易语言工程中添加对WORD的引用。
新建一个工程,将右边工具栏的“扩展组件1”中的“WORD程序组件”与“WORD 文档集组件”拖到窗体上。
如下图所示:这样,你的易语言就支持对WORD的操作了,然后在窗体上添加一个编辑框组件与一个按钮。
按钮用来执行代码,编辑框组件用于显示内容。
第二步:声明一个对象变量。
易语言是通过对象来操作WORD,当你完成了第一步的时候,系统已经自动添加了对WORD的引用,并产生了两个对象“WORD程序1”和“WORD文档集1”。
我们还需要声明一个对象,我命名为“WORD对象”。
如下图所示:这样程序中共有三个对象,是吧?网上的资料是声明了好几个对象,但我今天不采用。
因为很多人对于“对象”本来就了解不深,一大堆的对象看得头都大了。
所以今天的对象就尽量的少了。
对象多,写出的代码就短,好看。
对象少,代码长,但易于理解。
所以这里我选择后者,主要是为了方便大家理解对象的属性方法的调用过程。
第三步:建立WORD对象并打开WORD文件。
lotus以空格分隔的格式如果您想将Lotus转换为以空格分隔的格式,您可以使用Lotus的“文本转换”功能或使用LotusScript。
以下是使用LotusScript的示例:1. 打开Lotus文档,选择要转换的文本字段。
2. 在菜单栏上,选择“工具”>“LotusScript 编辑器”。
3. 在LotusScript编辑器中,将以下代码粘贴到代码窗口中:```lotusscriptSub ChangeToSpacesDim source As StringDim dest As StringDim i As IntegerDim j As Integer' 获取要转换的文本source =' 将文本转换为空格分隔的格式dest = ""For i = 1 To Len(source)If Mid(source, i, 1) = " " Thendest = dest & " "Elsedest = dest & Mid(source, i, 1)End IfNext i' 将转换后的文本设置回文档字段("YourFieldName", dest)End Sub```请注意,您需要将“YourFieldName”替换为要转换的实际字段名称。
此代码将从源文本中删除所有空格,并将结果设置为文档字段中的空格分隔格式。
4. 保存代码并关闭LotusScript编辑器。
5. 在Lotus文档中,选择“工具”>“运行宏”>“ChangeToSpaces”。
6. 运行宏后,您将看到转换后的文本已设置回文档字段中。
--e--EditBottom将插入点移动到文档或表单的底部。
语法@Command([EditBottom])用法在处于设计模式的表单中,EditBottom 将插入点移动到表单的底部,就象用户使用ctrl+end 一样。
在处于编辑模式的文档中,EditBottom 将插入点移动到文档的最后一个可编辑域中。
在处于阅读模式的文档中,EditBottom 不起作用。
EditButton为选中的按钮显示设计窗格和属性框。
语法@Command([EditButton])用法必须在编辑模式下打开文档,或者必须在设计模式下打开表单必须选中一个按钮。
EditClear执行菜单命令“编辑”“清除”。
语法@Command([EditClear])用法在视图、文件夹或者处于阅读模式的文档中,将当前选定的文档标记为删除。
在处于编辑模式的文档中,删除突出显示的数据(文本、表格、图形、链接、文件附件或对象)。
在处于设计模式的表单、子表单、视图或文件夹中,删除突出显示的数据、域或列。
在工作台上,删除所选的图标(并非从磁盘上永久删除数据库)。
使用便捷图标来调用此命令最为方便。
当您在Web 应用程序中使用本命令时,它将删除当前文档。
仅对Web 中的表单使用本命令,而在视图操作中无效。
EditCopy执行菜单命令“编辑”“拷贝”。
语法@Command([EditCopy])用法在视图或文件夹中,将选定的文档拷贝到剪贴板。
在处于阅读或编辑模式的文档中,将突出显示的数据拷贝到剪贴板。
在处于设计模式的表单、子表单、视图或文件夹中,将突出显示的数据、域或列拷贝到剪贴板。
您可以使用便捷图标以调用该命令。
EditCut执行菜单命令“编辑”“剪切”。
语法@Command([EditCut])用法在视图或文件夹中,删除选定的文档并将它们放在剪贴板上。
在处于编辑模式的文档中,删除突出显示的数据并将它们放在剪贴板上。
在处于阅读模式的文档中,EditCut 无任何效果。
常用lotus script2010-04-10 15:36保存并关闭窗口@Command([FileSave]);@Command([FileCloseWindow])取消保存并关闭窗口REM {Notes only};FIELD SaveOptions := 0;@Command([FileCloseWindow])或 window.close()新建讨论主题viewname := @Subset(@ViewTitle; -1);@SetProfileField("tmpProfile"; "viewtitle"; viewname); @PostedCommand([Compose];"MainTopic")新建主文档的答复REM {notes only};@Command([Compose]; "Response")新建答复viewname := @Subset(@ViewTitle; -1);@SetProfileField("tmpProfile"; "viewtitle"; viewname);@PostedCommand([Compose];"Response")新建答复的答复@PostedCommand([Compose];"ResponseToResponse")父文档预览REM {notes only};@Command([ShowHideParentPreview])搜索REM {Web only};@Command([ViewShowSearchBar])转发@Command([MailForward])作为书签转发@Command([Compose]; @MailDbName; "Bookmark")移至废纸篓@Command([MoveToTrash])清空废纸篓@Command([EmptyTrash])新建文件夹@Command([CreateFolder])或var pathname = (window.location.pathname);window.open(pathname.substring(0,(stIndexOf('.nsf')+5))+'F olderCreate?OpenForm','Folder','scrollbars,screenX=150,screenY=200,wi dth=500,height=280');删除文件夹var pathname = (window.location.pathname);window.open(pathname.substring(0,(stIndexOf('.nsf')+5))+'F olderRemove?OpenForm','Folder','scrollbars,screenX=150,screenY=200,wi dth=500,height=250');移入文件夹@If(!@IsAvailable(form); @Return(@Prompt([Ok]; "警告"; "您必须先选择一个文档。
lotusscript基本语法LotusScript基本语法LotusScript语言的基本知识一、概述LotusScript是一种和Basic相兼容的面向对象的Scripting环境,它具有强大的能够从事面向对象应用软件开发的语言范围,能够提供循环和分支的能力、数组以及访问Notes对象的能力。
判断Notes中什么时候使用LotusScript或公式语言1)任何时候当执行该任务的函数或命令存在时,使用公式。
2)对于复杂的程序控制或循环,使用LotusScript。
3)存取或操作储存的文档数据要使用LotusScript,特别对于跨文档、跨数据库的存取。
4)若公式语言不能办到,则使用LotusScript在Notes应用程序中访问和操作对象需要三步进行:1.声明对象变量DIMDIM db As NotesDatabase2.实例化一个类将其赋值给对象变量SET db = New NotesDatabase("Domestic","Sales.nsf")3.使用这个对象的方法或属性db.created '用来展现创建数据库时的日期和时间二、NotesScript中的数据元素NotesScript中的常量Null '特殊值,代表数据遗失或空Empty '相当于"",也就是空串Nothing '涉及变量的初始值,表示对象变量没有内容PI '圆周率True/False '分别为数值1和0数据类型Integer(整型) Long(长整型) Single(单精度型) Double(双精度型) Currency(货币型) String(字符串)运算符+ - * / < > <> = Not And OR &常量和变量Dim address As String '定义变量address = "100 Main Street " '变量赋值Const address = "100 Main Street" '创建字符常量address通信输入和输出Dim response as Integerresponse = Inputbox("Do you want to continue") '弹出输入框输入Messagebox(response) '弹出输出窗口输出数据注释1.单行注释:用Rem或'号2.多行注释:用%Rem和%EndRem%Rem '多行注释实例The first statement in this Script declares a variable myName.The second assign the value "Robert" to myName.The third statement display the value of myName.%EndRem数据类型转换Asc(String) 函数 '将字符串转化为ANSI字符代码CBool(expression) 函数 '将表达式转化为布尔型CByte(expression) 函数 '将表达式转化为字节型CCur(expression) 函数 '将表达式转化为货币型CDate(Strin*) 函数 '将字符串转化为日期型**bl(expression) 函数 '将表达式转化为双精度型Chr(Integer) 函数 '返回整数AscII码对象的字符,例如65表示A CInt(expression) 函数 '将表达式转化为整型CLng(expression) 函数 '将表达式转化为长整型CSng(expression) 函数 '将表达式转化为单精度型CStr(expression) 函数 '将表达式转化为字符串Hex(number) 函数 '返回十六进制Oct(number) 函数 '返回八进制三、数组管理Dim MyDays(7) as String '声明一个数组一共7个元素,下标为0~6Dim MyDay(1 to 7) as String '声明一个数组下标为1~7ReDim MyDay(1 to 3) '重新设置数组的边界和维数,这里ReDim用于定义动态数组UBound(MyDay,1) '返回数组的上界,1表示若是多维数组,返回第一维的上界LBound(MyDay) '返回数组的下界LBound(MyDay,2) '返回数组第2维的下界MyDay(1) = "Sunday" '给数组元素赋值四、语句1、IF ... End ifif balance > 100 theninterest = 0.35elseinterest = 0end if2、Select caseSelect case thisMonthcase 1Response = "January"case 2 to 10 '也可以写成case 10,20,30或case is > 10 response = "Other"case elseMessageBox(thisMonth & "is invalid value")end Select3、Do...loops和while... wendDo while/until 条件'语句组loopDo'语句组loop while/until 条件while 条件'语句组wend4、For...NextFor i = 1 to 5MyDays(i) = InputBox("Enter your work days:")Next i5、ForAllForAll m in db.managers '循环显示数组db.managers中的元素MessageBox(m)End ForAll1.声明变量Dim Variablename as typedim是dimension的缩写,为变量的值在内存中创建一个空间。
LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!怎样判断视图中没有文档?set doc = vw.getfirstdocument()if doc is nothing thenend if如何将查询结果放到一个文件夹里?下面是将搜索结果放到名叫newfolder的文件夹中,并跳转到该文件夹上Sub Click(Source As Button)Dim docs As notesdocumentcollectionDim doc As notesdocument...........q=doc.query(0)Set docs = db.ftsearch(q, 0)Call docs.PutAllInFolder( "newfolder" )Call w.OpenDatabase( "","","newfolder")End Sub如何删掉数据库中所有私有视图Dim session As New notessessionDim db As notesdatabaseDim doc As notesdocumentSet db=session.currentdatabaseForall i In db.viewsSet doc=db.getDocumentByUNID(v.universalID)' 这个地方视图当作文档来处理,以便取到视图的一些属性。
lotusscript中一些对多值文本域的操作总结多值文本域在编程时还是挺常用的,它在LS中属于Variant一类,是一个Variant列表。
偶谨总结一下多值文本域的常用操作,会的一笑置之便了,没遇到过的希望能有所帮助。
[1] 查询一个字符串"teststring"是否在多值文本域"MultiText"中。
dim item as NotesItemset item = doc.GetFirstItem("MultiText")if item.Contains("teststring") thenmessagebox("ok")end if[2] 向多值文本域追加一个字符串。
dim item as NotesItemset item = doc.GetFirstItem("MultiText")call item.AppendT oTextList("teststring")[3] 删除多值文本域中的一个字符串。
doc.MultiText = FullTrim((ArrayReplace(doc.MultiText, "teststring", ""))[4] 替换多值文本域中的一个字符串。
doc.MultiText = ArrayReplace(doc.MultiText, "teststring", "replacedstring")[5] 追加一个多值文本域到另外一个多值文本域上。
doc.MultiText = ArrayAppend(doc.MultiText, doc.MultiTextAppend)[6] 确定一个字符串在多值文本域中的位置。
p = ArrayGetIndex(doc.MultiT ext, "teststring")[7] 提出多值文本域中第2个元素。
怎样用lotusScript启动附件首先使用EmbeddedObjects类将附件拆离到一个临时文件夹里,然后用shell命令语句运行它怎样在lotusScript中创建一个姓名域、读者域、作者域创建一个"specialType"姓名域Dim variableName As New NotesItem( notesDocument, name$, value [,specialType%]) 创建一个"Author"作者域Dim TAuthor As New NotesItem(doc, "Author", Auths, AUTHORS)TAuthor.IsSummary = True修改了主文档后,怎样自动修改答复文档Sub QuerySave(Source As Notesuidocument, Continue As Variant)Dim Collection As NotesDocumentCollectionDim Doc As NotesDocumentDim Form, ParentStatus, Status As StringSet Doc = Source.DocumentSet Collection = Doc.ResponsesSet Doc = Collection.GetFirstDocumentParentStatus = Source.FieldGetText("STATUS")While Not ( Doc Is Nothing )Form = Doc.GetItemValue("Form")(0)Status = Doc.GetItemValue("Status")(0)If (Form = "TASK")And (Status <> ParentStatus) ThenCall Doc.ReplaceItemValue( "STATUS", ParentStatus )Call Doc.Save (True, False)End IfSet Doc = Collection.GetNextDocument(Doc)WendEndSub怎样及时取到服务器的时间dim doc as notesdocumentset doc = Serverdb.CreatedocumentcreateDate = doc.Created............最后不要让该文档存盘lotusScripts中怎样在字符串里加回车?"aaa"+chr(10)+"bbb"怎样屏蔽用户用Delete键删除文件在数据库Script中的Querydocumentdelete中使用下列语句。
Office 文档集数据库是以嵌入对象的方法嵌入word文档的,该文档在body域中,发送传真时,页眉、页脚发不出来,其他格式能正常发出来.而且可以做到不发传真封面,另外,这种方式也可以避免附件方式那样发出来还会出现一个附件图标,故现在的任务是如何往该文档中写内容了。
往该文档中写内容,有两种方式:一种是用VB写一个DLL,有关word文档的操作,包括插入一个表格、插入一个字符串、插页眉等等。
这些函数都放在Dll中,然后被lotus script调用。
另一种方式是用lotusscript 直接操纵该嵌入文档,但操纵嵌入文档的lotusscript语法与VB语法差异很大。
所能获得的例子代码和帮助都是VB语法,只能从lotusscript提取的ole对象库中去察看个函数的语法,至于个函数中的参数的意义只能从msdn中获得,而msdn中对参数的讲解也不是很详细,所有VB常量在lotusscript中没有定义,只能半猜半试的直接使用数值。
下面的例子是lotus script 操纵word文档:
'获取嵌入文档的句丙
Set thisdoc = source.getobject("oleobject"
'设置该文档的页面设置的左边距为20个单位(象素)
With thisdoc.pagesetup
.leftmargin = 20
End With
'插入页眉(由于真正的页眉在传真时无法显示,这里的页眉是模拟的)
'插入一幅图
Set thispicture = thisdoc.shapes.Addpicture("d:\学习\cassiatb.jpg"
'设置文字的插入点thisrange
Set thisrange = thisdoc.range(1,1)
pageheadstring = "CAISSA Touristic GmbH" & Chr(10) & "HAMBURG·BEIJING·SHANGHAI·BARCELONA" & Chr(10) &Chr(10) & Chr(10)
'插入一段文字:pageheadstring
thisrange.insertbefore (pageheadstring)
'获取一段文字:从字符1到24
Set thisrange = thisdoc.range(1,24)
'设置该段文字的属性:
With thisrange
.bold = True '加粗
.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter 行居中.font.size = 20 '字体大小为20
End With
Set thisrange = thisdoc.range(25,59)
With thisrange
.bold = True
.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter
.font.size = 16
End With
'thispicture.wrapformat.side = wdwrapright
'设置图像属性
With thispicture.wrapformat '环绕方式
.type = wdwrappicture '类型为picture
.side = wdwrapright '文字右环绕
End With。